AWS App RunnerにGoアプリケーションをデプロイするステップバイステップガイド

...管理されたGoランタイムを使って

このブログ記事では、Goのプラットフォームランタイムを使ってGoアプリケーションをAWS App Runnerに実行する方法を学びます。GitHub上の既存のGoアプリケーションをスタートとして、それをAWS App Runnerにデプロイします。アプリケーションは、DynamoDBにデータを保存するURL短縮アプリケーション(いくつかの変更を加えたバージョン)に基づいています。

取り上げる内容は以下の通りです:

AWS App Runnerは、2種類のサービスソースに基づいてサービスを作成し管理できます:

  • ソースコード(このブログ記事で取り上げています)
  • ソースイメージ

ソースコードとは、App Runnerがビルドしてデプロイするアプリケーションコードのことです。必要なのは、App Runnerにソースコードリポジトリを指定し、プログラミングプラットフォームバージョンに対応した適切なランタイムを選ぶことだけです。App Runnerは、言語固有の管理されたランタイム(Python、Node.js、Java、Goなど)を提供します。

AWS App Runner Go プラットフォームランタイムは、Goバージョンに基づいたWebアプリケーションのコンテナを簡単にビルドして実行することを可能にします。コンテナ設定やビルド指示(Dockerfileなど)を提供する必要はありません。 Goランタイムを使用すると、App Runnerは_管理された_ Goランタイムイメージからスタートします。これはAmazon Linux Dockerイメージに基づいており、Goのバージョンのランタイムパッケージといくつかのツールが含まれています。App Runnerはこの管理ランタイムイメージをベースイメージとして使用し、あなたのアプリケーションコードを追加してDockerイメージをビルドします。続いて、このイメージをデプロイしてコンテナでWebサービスを実行します。

前提条件

AWSアカウントを持っている必要があり、AWS CLIをインストールしてください。

始めましょう…

URL短縮アプリケーション用のGitHubリポジトリを作成する

以下のコードブロックを記入してください。言語はGoです。

git clone https://github.com/abhirockzz/apprunner-go-runtime-app

URL情報を保存するためのDynamoDBテーブルを作成する

urlsという名前のテーブルを作成します。次のように選択してください:

  • shortcodeという名前のパーティションキー(データタイプはString
  • オンデマンド容量モード

DynamoDB固有の権限を持つIAMロールを作成する

以下のコマンドを入力してください。言語はbashです。

export IAM_ROLE_NAME=apprunner-dynamodb-role

aws iam create-role --role-name $IAM_ROLE_NAME --assume-role-policy-document file://apprunner-trust-policy.json

ポリシーを作成する前に、dynamodb-access-policy.jsonファイルを更新してDynamoDBテーブルARNを反映させてください。

aws iam put-role-policy --role-name $IAM_ROLE_NAME --policy-name dynamodb-crud-policy --policy-document file://dynamodb-access-policy.json

アプリケーションをAWS App Runnerにデプロイする

既存のAWS App Runner GitHub接続を持っていて、それを使用したい場合は、リポジトリ選択ステップにスキップしてください。

AWS App Runner GitHub接続を作成する

App Runnerコンソールを開いてサービスを作成を選択します。

ソースとデプロイメントページのソースセクションで、リポジトリタイプにソースコードリポジトリを選択します。GitHubに接続するの下で、新規追加を選び、プロンプトが表示されたらGitHubの資格情報を提供してください。

GitHubアカウント名が選択されたGitHubアカウント/組織として出現します。これでアカウント内のリポジトリを選択できます。

リポジトリ選択

リポジトリとして、作成したリポジトリを選択します(apprunner-go-runtime-app)。ブランチにはリポジトリのデフォルトのブランチ名を選択します(例: main)。

デプロイメントの設定を構成するデプロイメント設定セクションで、自動を選択し、次へをクリックします。

アプリケーションビルドを構成する

ビルドを構成するページで、設定ファイルここで全ての設定を構成するを選んでください。

URL短縮機能を検証する

アプリケーションは2つのエンドポイントを公開しています:

  1. URLに対して短縮リンクを作成するためのもの
  2. 短縮リンク経由で元のURLにアクセスするためのもの

まず、App Runnerサービスのエンドポイントを環境変数としてエクスポートします。

export APP_URL=<enter App Runner service URL>

# 例
export APP_URL=https://jt6jjprtyi.us-east-1.awsapprunner.com

短縮リンクを通してアクセスしたいURLでそれを呼び出します。

curl -i -X POST -d 'https://abhirockzz.github.io/' $APP_URL

# 出力
HTTP/1.1 200 OK
Date: Thu, 21 Jul 2022 11:03:40 GMT
Content-Length: 25
Content-Type: text/plain; charset=utf-8

{"ShortCode":"ae1e31a6"}

クリーンアップ

このチュートリアルを完了したら、以下を削除することを忘れないでください:

  • DynamoDBテーブル
  • App Runnerサービス

結論

このブログ記事では、GitHubリポジトリにあるGoアプリケーションから、AWS App Runnerにデプロイされた完全なURL短縮サービスに至るまでの方法を学びました!

こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/aws/deploying-go-applications-to-aws-app-runner-a-step-by-step-guide-3jff