AWS App Runner でコンテナ Web アプリを即座にデプロイ - ソースコードからの自動ビルドと HTTPS 公開
App Runner によるコンテナアプリケーションのデプロイ、自動スケーリング、カスタムドメインの設定を解説します。
App Runner の概要
App Runner はコンテナ化された Web アプリケーションと API をフルマネージドにデプロイ・実行するサービスです。ECS がタスク定義、サービス、クラスターの設定を必要とするのに対し、App Runner はソースコードまたはコンテナイメージを指定するだけで、ビルド、デプロイ、スケーリング、ロードバランシングを自動的に処理します。
デプロイとスケーリング
ソースベースデプロイは GitHub リポジトリを接続し、App Runner がビルドコマンド (npm install && npm run build) と起動コマンド (npm start) を実行してコンテナイメージを自動構築します。イメージベースデプロイは ECR のコンテナイメージを直接指定します。自動スケーリングはリクエストの同時実行数に基づいてインスタンスを増減し、最小 1 から最大 25 インスタンスの範囲で設定します。VPC コネクタを設定すると、App Runner のインスタンスから VPC 内の RDS や ElastiCache にプライベート接続できます。
VPC コネクタとカスタムドメイン
VPC コネクタを設定すると、 App Runner サービスからプライベートサブネット内の RDS や ElastiCache にアクセスできます。アウトバウンド通信のみが VPC 経由になり、インバウンドは引き続き App Runner のマネージドエンドポイントで受け付けます。カスタムドメインを設定すると ACM 証明書が自動発行され、 HTTPS でのアクセスが可能になります。オブザーバビリティ設定で X-Ray トレーシングを有効にし、リクエストのレイテンシとエラーを可視化します。 コンテナ技術の知見を広げたい場合はAmazon の専門書も活用できます。
App Runner の料金
App Runner はアクティブなコンテナインスタンスの vCPU とメモリで課金されます。vCPU は 1 時間あたり約 0.064 ドル、メモリは 1 GB 時間あたり約 0.007 ドルです。トラフィックがない時間帯はプロビジョニングされたインスタンスのメモリ料金のみが課金され、vCPU 料金は発生しません。自動スケーリングの最大インスタンス数を適切に設定し、予期しないコスト増加を防止します。Fargate と比較して運用の簡素さが利点ですが、細かいネットワーク制御が必要な場合は ECS Fargate が適しています。
まとめ
App Runner はコンテナアプリケーションのデプロイを最小限の設定で実現するサービスです。ソースコードまたはコンテナイメージを指定するだけで、ビルド、デプロイ、スケーリング、HTTPS が自動構成されます。VPC コネクタでプライベートサブネット内の RDS や ElastiCache にアクセスでき、運用負荷を最小化しながら本番環境を運用できます。