[アップデート]AWS App Runnerは、ソースディレクトリを指定してコマンド実行できるようになり、モノレポのデプロイに対応しました
はじめに
App Runnerは、モノレポ構成のリポジトリのデプロイに対応しました。
モノレポとは、アプリケーションやマイクロサービスなどのコードを同一リポジトリで管理する手法のことです。
これまでは、ビルドおよび起動コマンドの実行は、リポジトリのルートディレクトリのみをサポートしていました。
今回のアップデートにより、App Runnerでは任意のソースディレクトリ(コマンドを実行するパス)を指定できるようになりました。
これにより、開発者は指定したソースディレクトリからビルドし、起動コマンドを実行できるため、モノレポ構成のリポジトリのデプロイが容易になりました。
AWSマネジメントコンソールで確認すると、「ソースディレクトリ」を指定できるようになっていました。
これだけだと物足りないので、今回、AWSが公式ブログで紹介しているサンプルアプリケーションをデプロイしながら、この新機能を試してみます。
構成としては、以下の通りです。一つのリポジトリからフロントエンドとバックエンドに分かれてApp Runnerをデプロイします。
フロントエンドからバックエンド、RDSへの通信にはVPCエンドポイントとVPCコネクタが利用されます。
AWS App Runnerの概要は、下記を参考下さい。
試してみた
まずは、自身のGitHubアカウントに、下記のサンプルアプリケーションのmonorepoブランチをフォークします。
フォークしたリポジトリ内のinfrastructure/base-infra.yaml
ファイルをダウンロードし、それを使ってCloudFormationのスタックを作成します。
今回は、バージニアリージョンでデプロイしました。
VPC、VPCエンドポイント、VPCコネクタ、RDS インスタンス、およびデータベース認証情報を保存したSecrets Managerなどが作成されます。
App Runnerサービス作成
まず、バックエンドサービスを作成します。ソースコードリポジトリを選択し、プロバイダーであるGitHubと接続します。
フォークしたリポジトリを選択し、ブランチは、monorepo
を選択します。
今回のアップデートで導入されたソースディレクトリでは、backend
を指定します
backend
ディレクトリで、実行するビルドと起動コマンドを設定します
- ランタイム:Nodejs 16
- 構築コマンド:npm install
- 開始コマンド:npm start
- ポート:8080
サービス設定は、下記の通りに設定します
- サービス名:hotel-backend
- SSM パラメータストア:HOTEL_NAME:SSM パラメータストアのARN
- Secrets Manager:MYSQL_SECRET:Secrets ManagerのARN
- インスタンスロール:AppRunnerHotelAppRole-us-east-1
- インスタンスロール名は、スタックを作成したリージョンによって変わります。
各ARNは、CloudFormationのスタック出力から確認できます。
続いてネットワークにおいて、受信トラフィックは、パブリックにアクセスにアクセスはせずに、フロントエンドからVPCエンドポイント経由のアクセスをのみを受け付けるため、プライベートエンドポイントを選択します。
VPCエンドポイントは、CloudFormationで作成済みです。
送信ネットワークトラフィックでは、AppRunnerHotelApp-FE-Connector
を選択します
バックエンドのデプロイが完了です。
フロントエンド
次にフロントエンドのサービスを作成します。ソースディレクトリは、frontend
を指定し、他の設定はバックエンドサービスと同じです
サービス設定は、下記の通りです
- SSM パラメータストア:HotelName:SSM パラメータストアのARN
- プレーンテキスト:BACKEND_URL:バックエンドのURL
- インスタンスロール:AppRunnerHotelAppRole-us-east-1
- インスタンスロール名は、スタックを作成したリージョンによって変わります。
BACKEND_URL
は、バックエンドをデプロイしたときに自動で払い出させるURLのことです。
ネットワーク設定において、受信トラフィックは、インターネットからのアクセスを受け付けるため、パブリックエンドポイントを選択します。
- 受信ネットワークトラフィック:パブリックエンドポイント
- 送信ネットワークトラフィック:カスタム VPC
- VPC コネクタ:AppRunnerHotelApp-BE-Connector
送信ネットワークトラフィックでは、AppRunnerHotelApp-BE-Connector
を選択します
フロントエンドのデプロイが完了しましたので、自動生成されたフロントエンドのデフォルトドメインのURLにアクセスしてみます。
結果として表示された "AWS App Runner Hotel" を見ると、正常にデプロイされ成功したことが確認できます。
最後に
AWS App Runnerが新たにモノレポのデプロイに対応したことにより、一つのリポジトリから複数のサービス(例:フロントエンドとバックエンド)を分けてデプロイすることが可能になりました。
App Runnerはより柔軟になり、開発の作業効率の向上に繋がります。