はじめに
ここ最近はECSに関する記事を投稿してきましたが、今回は少し嗜好を変えて、2021年にリリースされてから新しい機能がどんどん追加されているAWS App Runnerを使ってみましたので、その紹介をしたいと思います。
今回の記事で行うこと
今回の記事では、以前の記事でECSの環境構築の際に使用したGoのEchoサーバのDockerイメージを使って、App Runnerでデプロイする手順を紹介します。
AWS App Runnerとは
AWS App Runnerは、Amazon ECSやAmazon EKSなどと同様にコンテナを扱うサービスの一種です。App Runnerはこれらの中で最も管理コストが低いサービスだと言えます。
App Runnerは、Dockerイメージ、または、GitHubのリポジトリのコードを使用し、簡単な設定のみで自動デプロイやオートスケーリングなどを実現することができます。
より詳しい説明を知りたい方は、こちらをご覧ください。
App Runnerでコンテナをデプロイする
それでは早速、App Runnerでコンテナをデプロイしてみます。
App Runnerでは、簡単な2ステップの設定でデプロイ、ヘルスチェック、オートスケーリングなどの設定が行えます。
ステップ1「ソースおよびデプロイ」
ステップ1では、ソース(デプロイするコンテナのイメージ、または、GitHubのリポジトリ)の指定と、デプロイ設定を行います。今回はソースとしてECRのイメージを指定します。
ソースの設定
コンテナイメージのURLの所で参照をクリックすると、イメージの選択が簡単にできます。
デプロイ設定
イメージがECRにPUSHされると自動でデプロイされるようにしたいので、デプロイトリガーは自動を選択します。
ECRアクセスロールをまだ作成していなければ、「新しいサービスロールの作成」を選択しておけば自動で作成されて選択されます。
ステップ2「サービスを設定」
ステップ2では、コンテナに割り当てるCPUとメモリの量、環境変数などのコンテナ実行に関するサービス設定や、Auto Scaling、ヘルスチェック、セキュリティ、ネットワーキングなどを設定します。
サービス設定
仮想CPUとメモリでは、1vCPU(メモリ2GB〜4GB)か2vCPU(メモリ4GBのみ)のどちらかしか選択することができません。
また、機密データについては、ECSと同様に環境変数として渡すことができます(ただし、App RunnerではARNで指定する必要がある)。
Auto Scaling
Auto Scalingの項目としては、1コンテナあたりのしきい値、インスタンスの最小/最大数のみ指定します。デフォルトでは以下のようになっています。
カスタム設定を選ぶ場合は、モーダルで設定を追加することができます。
ヘルスチェック
ヘルスチェックの項目は以下のとおりです。
セキュリティ
セキュリティでは、インスタンスにアタッチするIAMロールとKMSキーを選択することができます。
System ManagerのパラメータストアやSecrets Managerを参照する場合やS3などにアクセスする必要がある場合は、IAMロールをアタッチする必要があります。
ネットワーキング
基本的にApp RunnerではVPCを意識しないで扱う事ができますが、プライベートサブネット上にあるRDSにアクセスする等ようなケースでは、特定のVPC配置されてほしいという要望があると思います。
今回は特にVPCに紐付ける必要はないのですが、このようなケースでの対応を想定して既存のVPCに紐付けるようにします。
送信ネットワークトラフィックで「カスタムVPC」を選択し、VPCコネクタを選択(もしくは作成)します。
新規追加をクリックすると以下のようなモーダルが表示されます。
ステップ3「確認および作成」
ここまで設定ができれば、「作成とデプロイ」をクリックしてApp Runnerにデプロイを行います。今回は小さなアプリケーションのデプロイですが、それでも初回は結構時間がかかりました(5〜10分ほど)
App Runnerのサービスの画面はこのような感じです。
さいごに
ECSのデプロイで使用したイメージを使って、App Runnerにデプロイしてみました。設定項目が少ない(自由度も低いですが)ので、少ないリソースでサービスを立ち上げられるのは魅力てきに思えました。ただ、ある程度以上のアクセスがあるサービスの場合で利用できるようになるまでにはもう少し時間がかかりそうな印象です。
どんどん機能が追加されていっているので、今後がとても楽しみなサービスではないかと思います。