こんにちは。AWS CLIが好きな福島です。
今回は、約3週間前に登場したAWS App Runnerという新サービスをマネジメントコンソールとCLIから使ってみたので、その内容をブログに記載いたします。
参考
AWS App Runner のご紹介 | Amazon Web Services ブログ
App Runnerとは
ソースコードやコンテナイメージを使用して、アプリケーションを簡単にデプロイできるマネージドサービスです!
ということで、爆速で本題に入っていきます。
マネージメントコンソール編
①「サービスの作成」をクリックします。
②ソースの設定
「Amazon ECR パブリック」をクリックします。
「コンテナイメージのURI」に「public.ecr.aws/aws-containers/hello-app-runner:latest」を入力します。
③サービスの設定
「サービス名」に任意の値を入力します。
「ポート」には、「8000」を指定します。
仮想CPUは、1,2vCPUが選択できます。
メモリは、2,3,4GBが選択できます。
④その他の設定
今回は、デフォルトのままいきますが、以下の設定もできます。
・AutoScalingの設定
・ロードバランサーのヘルスチェックの設定
・インスタンスのロールの設定
・KMSを使ったデータの暗号化
⑤作成とデプロイ
設定のサマリを確認し、「作成とデプロイ」をクリックします。
⑥動作確認
ステータスが「Running」になることを確認し、デフォルトドメインにアクセスします。
無事にアクセスできました!!!
App Runnerのその他の情報
ログ
以下のログが見れます。
・イベントログ
・デプロイログ
・アプリケーションログ
メトリクス
以下のメトリクスを確認することもできます。
・Request count
・HTTP 2xx response count
・HTTP 4xx response count
・HTTP 5xx response count
・Request latency
・Active instances
画像は、Request latencyとActive instancesのメトリクス。
カスタムドメイン
カスタムドメインも5つまで設定できるようです。
CLI編
①「hello-app-runner.json」という名前でファイルを作成します。
ファイルの中身
{ "ServiceName": "hello-app-runner", "SourceConfiguration": { "ImageRepository": { "ImageIdentifier": "public.ecr.aws/aws-containers/hello-app-runner:latest", "ImageRepositoryType": "ECR_PUBLIC", "ImageConfiguration": { "Port": "8000" } }, "AutoDeploymentsEnabled": false } }
②コマンドを実行します。
aws apprunner create-service --cli-input-json file://hello-app-runner.json
実行結果)
{ "Service": { "ServiceName": "hello-app-runner", "ServiceId": "42010c9af09a484ea4cb2f1ac2b5a91e", ★ "ServiceArn": "arn:aws:apprunner:ap-northeast-1:xxxxxxxxxxxx:service/hello-app-runner/42010c9af09a484ea4cb2f1ac2b5a91e", "ServiceUrl": "w2iyamquyd.ap-northeast-1.awsapprunner.com", "CreatedAt": "2021-06-05T04:17:05.715000+09:00", "UpdatedAt": "2021-06-05T04:17:05.715000+09:00", "Status": "OPERATION_IN_PROGRESS", "SourceConfiguration": { "ImageRepository": { "ImageIdentifier": "public.ecr.aws/aws-containers/hello-app-runner:latest", "ImageConfiguration": { "Port": "8000" }, "ImageRepositoryType": "ECR_PUBLIC" }, "AutoDeploymentsEnabled": false }, "InstanceConfiguration": { "Cpu": "1024", "Memory": "2048" }, "HealthCheckConfiguration": { "Protocol": "TCP", "Path": "/", "Interval": 5, "Timeout": 2, "HealthyThreshold": 1, "UnhealthyThreshold": 5 }, "AutoScalingConfigurationSummary": { "AutoScalingConfigurationArn": "arn:aws:apprunner:ap-northeast-1:xxxxxxxxxxxxxx:autoscalingconfiguration/DefaultConfiguration/1/00000000000000000000000000000001", "AutoScalingConfigurationName": "DefaultConfiguration", "AutoScalingConfigurationRevision": 1 } }, "OperationId": "e2d2af0cac3d4c60b580033886dc083e" }
ステータスチェックの際に利用するので、ServiceArnを変数に定義しておきます。
SERVICEARN="上記出力に含まれているServiceArn"
実行例)
SERVICEARN=arn:aws:apprunner:ap-northeast-1:xxxxxxxxxxxx:service/hello-app-runner/42010c9af09a484ea4cb2f1ac2b5a91e
③ステータス確認。
aws apprunner describe-service --service-arn $SERVICEARN --query "Service.{ServiceName:ServiceName,Status:Status,ServiceUrl:ServiceUrl}" --output table
実行結果)
------------------------------------------------------------------------------- | DescribeService | +-------------------+----------------------------------------------+----------+ | ServiceName | ServiceUrl | Status | +-------------------+----------------------------------------------+----------+ | hello-app-runner | w2iyamquyd.ap-northeast-1.awsapprunner.com | RUNNING | +-------------------+----------------------------------------------+----------+
④動作確認。
③の出力結果であるServiceUrlにアクセスします。
curl https://xxxxxxxxx.ap-northeast-1.awsapprunner.com
実行結果)
# curl https://w2iyamquyd.ap-northeast-1.awsapprunner.com ______ __ __ __ _ __ / ____/___ ____ ____ __________ _/ /___ __/ /___ _/ /_(_)___ ____ _____/ / / / / __ \/ __ \/ __ `/ ___/ __ `/ __/ / / / / __ `/ __/ / __ \/ __ \/ ___/ / / /___/ /_/ / / / / /_/ / / / /_/ / /_/ /_/ / / /_/ / /_/ / /_/ / / / (__ )_/ \____/\____/_/ /_/\__, /_/ \__,_/\__/\__,_/_/\__,_/\__/_/\____/_/ /_/____(_) /____/ Congratulations, your service has successfully deployed on AWS App Runner. Open it in your browser at https://w2iyamquyd.ap-northeast-1.awsapprunner.com/ Try the workshop at https://apprunnerworkshop.com Read the docs at https://aws.amazon.com/apprunner #
料金
主に、CPUとメモリ、リクエストの処理数に応じて、料金がかかります。 App Runnerは停止することが可能です。
停止している場合
0USD
起動している場合(リクエストがない場合
東京リージョンの場合、
メモリ1GBあたり、0.009USD/時
かかります。
※東京リージョンは他リージョンに比べて少し高いです。
起動している場合(リクエストがある場合
東京リージョンの場合、
・1vCPUあたり、0.081USD/時
・メモリ1GBあたり、0.009USD/時
かかります。
※東京リージョンは他リージョンに比べて少し高いです。
→リクエストがあると、vCPUの料金が上乗せされるイメージです。
その他
自動デプロイ:1 USD/アプリケーション、月額
ビルド時間:0.005 USD/ビルド時間 (分)
他の AWS サービスおよびデータ転送の利用
AWS App Runner の料金 – フルマネージド型のコンテナアプリケーションサービス - Amazon Web Services
終わりに
SGの設定ができなそうだったので、アクセス制御が必要な場合は、注意が必要そうですが、手軽にコンテナをデプロイできるのは良いですね!