概要
AWS App RunnerのVPCリソースへのアクセスが可能になり、色々と検証している中で、ECS・Fargateとの違いなどを簡単にまとめてみました。
目次
注意
個人的な主観レベルのものであったり、短い時間での操作によって判断したものもあるため、内容に間違い・変更がある可能性がある点はご了承下さい。
App Runnerはどんどん新機能が追加されてきていますので、新規情報があれば随時更新していきます。
アップデート情報
- 2023/12/07: イメージベースのデプロイパフォーマンスを改善! <- new!!
- 2023/11/03: パブリックなインバウンドトラフィックにIPv6をサポート
- 2023/10/05: カスタムドメイン設定に自前のDNSレコード作成・TLS/SSL証明書の検証などが不要に
過去のアップデート
- 2023/09/27: ソースコードリポジトリにモノレポが対応!
- 2023/09/22: Auto-Scaling Configuration管理の改善(更新などが可能に)!
- 2023/08/30: ソースコードリポジトリにBitbucketをサポート!
- 2023/06/30: CREATE_FAILEDになったサービスの更新・再構築が可能に!
- 2023/06/22: AutoScalingConfigurationがCloudFormationに対応!
- 2023/04/05: 7つの新しいコンピューティング構成を追加(計11種類のスペックの組み合わせに)
- 2023/03/01: アジアパシフィック(シンガポール、シドニー)、ヨーロッパ(フランクフルト)リージョンが対応
- 2023/02/24: AWS WAFをサポート
- 2023/02/22: HTTPからHTTPSへのリダイレクトをサポート
- 2023/02/17: サービスレベルの同時リクエスト数・CPU率・メモリ率メトリクスを追加
- 2023/02/01: HTTP 1.0 プロトコルをサポート
- 2023/01/06: AWS Secrets ManagerとAWS Systems Managerからのシークレットの取得に対応
- 2022/11/1: VPC内からのプライベートアクセスに対応
- 2022/10/28: マネージドランタイム(ソースコードのプッシュから自動デプロイ)にPHP, Go, .Net, Ruby対応
- 2022/09/26: マネージドランタイム(ソースコードのプッシュから自動デプロイ)にNode.js 16対応
- 2022/09/16: クロスリージョンのECRからのデプロイに対応
- 2022/08/30: Route53のAliasレコード対応
- 2022/04/12: X-Rayサポート開始
- 2022/02/22 : GitHubとの連携時の対応ランタイム追加
- Java(Corretto 8, Corretto 11)、Node.js 14
- docs.aws.amazon.com
前提
以下のメリット・デメリットは、AWS App Runnerの特徴をベースに記述しています。
App RunnerのメリットはECS・Fargateにないもの、App RunnerのデメリットはECS・Fargateにあるもの、といったイメージです。
AWS App Runnerのメリット
- CI/CDの簡易化
- VPCやELBのリソースの隠蔽
- ロググループの自動作成
- 以下3種類のログが自動で作成される
- アプリケーションログ
- デプロイログ
- イベントログ
- 以下3種類のログが自動で作成される
- セキュリティグループの隠蔽
- ECS, ELB用
- AutoScalingポリシーの簡易化
- ECS・Fargateの際のようなCloudWatch Alarmが必要ない
- しかし別途設定がいる(ECSと少し項目が違う)
- カスタムドメインの自前のDNSレコード作成・SSL証明書の検証などが不要(2023/10/05〜)
- Route53での設定や管理がいらない
- リクエスト処理をしていない(=アクティブでない)ときはvCPU料金がかからない
- プロビジョニングされたコンテナインスタンス
- メモリ(GB)ごとに料金が発生
- アクティブ(リクエスト処理中)なコンテナインスタンス
- メモリ(GB)ごと + vCPUごとに料金が発生
- vCPU料金 = メモリ料金の9倍 (東京リージョン)
- aws.amazon.com
- プロビジョニングされたコンテナインスタンス
AWS App Runnerのデメリット
対応済み
AWS WAFをアタッチできない- 2023/02/24 AWS WAFサポートされました!!
- Fargateでの運用ではELBにアタッチする
秘匿な環境変数が扱えないカスタムドメイン設定でALIASレコードが未対応- 2022/08/30 ALIASレコード対応されました!!
スペックの種類が少ない(以下のCPU, Memoryの組み合わせ)- 2023/04/05 11種類のスペックの組み合わせになりました!!
- ECS Fargateは16v CPU, 120 GBまで可能なため、まだ小規模向けではあります。
vCPU(CPU) | GB(メモリ) |
---|---|
0.25 vCPU | 0.5 GB |
0.25 vCPU | 1 GB |
0.5 vCPU | 1 GB |
1 vCPU | 2 GB |
1 vCPU | 3 GB |
1 vCPU | 4 GB |
2 vCPU | 4 GB |
2 vCPU | 6 GB |
4 vCPU | 8 GB |
4 vCPU | 10 GB |
4 vCPU | 12 GB |
AutoScalingConfigurationがCloudFormation未対応- 2023/06/22 CloudFormation対応されました!!
未対応
- Arm(Graviton)イメージ未対応
- App Runnerへのインバウンドを制御するセキュリティグループがつけられない
- 現状App Runnerにアタッチするセキュリティグループはアウトバウンドに使われるものであるため
- スケーリング基準が同時実行数のみ
- 他のメトリクスでのスケーリングは現状できない
- AutoScalingの最低台数を0にはできない
- 何台立ち上げているのかわからない(わかりづらい)
- アクセスが来ない期間は、Active Instancesメトリクスが0になるため
- 料金の大部分(vCPU代)はActive Instancesに起因して料金発生する(0なら発生しない)ので、Fargateと比べて厳密にわからなくても良いところはある
- ECR連携で自動デプロイをする場合、実質latestタグ固定の運用が必要
- 自動デプロイは特定のイメージタグのプッシュをトリガーにするために、固定のタグの必要がある
- タグをイミュータブル(上書き禁止)にできない
- ECRにはイミュータブルタグ機能がある
- アクセスログが出せない
- ELBアクセスログのようなログ
- どうしても欲しくて起票しました。
- サイドカーコンテナを組み込めない
- ECSのContainer Insightsレベルのメトリクスは取れない
- ECS Execができない
- カスタムドメインがCloudFormation未対応
- CLIかカスタムリソースが必要
- EFS未対応
- Windowsコンテナ未対応
どちらでも変わらないこと
- ソースコードまたはDockerfile(ECR連携の場合)の管理
- スペック指定の必要
- CPU
- メモリ
- AutoScalingのルール定義
- 最小台数
- 最大台数
- スケールアウトの閾値
- App Runnerでは同時接続数(デフォルト: 100)
- ヘルスチェックルール定義
- IAMロールの管理
- App Runnerの方が少しは楽
- CloudWatch Logsなどへのポリシーはいらないため
- App Runnerの方が少しは楽
- ポートや環境変数の管理
- やらなくても良い
ロードマップ
今後のApp RunnerのロードマップをGitHubのissuesにて見ることができます。
欲しい機能などのissueがあればgoodリアクションをすると良いですね。
実際にロードマップに機能追加のリクエストを出してみました。起票の仕方なども書いてみたので、よかったらぜひご覧下さい。
AWS CDK・CloudFormation
App RunnerをAWS CDKやCloudFormationで作成する記事も書いているので、良かったらぜひご覧下さい。
最後に
App Runnerをちゃんと触ってみて、すごく便利だなと思いつつも痒いところに手が届かない点が見えてきました。
でもフルマネージドサービスってトレードオフというか、こういうことですよね。
あまり機能を詰めてもECS・Fargateと変わらなくなってしまうし・・・
ただFargateのフルマネージド感や便利さもすごかったのに、さらに便利なマネージドサービスが出てくるところが技術の進化・変化を感じますね。
今後いい塩梅に機能が追加されてくれたらもっと素晴らしいサービスになりそうで、今後に期待です。