MENU

AWS App Runner入門|コンテナWebアプリをサーバー管理ゼロでデプロイする仕組みと料金・ECS Fargateとの使い分けガイド

コンテナをAWSで動かそうとすると、タスク定義・サービス・ターゲットグループ・ALB・IAMロール・セキュリティグループ……と設定項目の多さに圧倒されることがあります。「もう少し手軽に動かしたい」というニーズに応えて2021年に登場したのがAWS App Runnerです。

App RunnerはDockerイメージかGitHubリポジトリを渡すだけで、ロードバランサー・HTTPS・オートスケーリングを含む稼働環境を自動で整えてくれるフルマネージドサービスです。

この記事では、App Runnerの仕組み・料金体系・設定手順を解説し、ECS Fargate・Elastic Beanstalkとの使い分けを整理します。コンテナWebアプリをAWSで素早く本番稼働させたいエンジニア向けの実践ガイドです。

AWS App Runner入門|コンテナWebアプリをサーバー管理ゼロでデプロイする仕組みと料金・ECS Fargateとの使い分けガイド - 解説

目次

AWS App Runnerとは?ECSやElastic Beanstalkとの違い

App Runnerは、WebアプリケーションとAPIをコンテナで実行するためのフルマネージドサービスです。開発者はアプリのコードとDockerイメージに集中でき、インフラ管理から解放されます。

App Runner登場以前のコンテナ実行サービスを整理すると、以下のとおりです。

・Amazon ECS(EC2起動タイプ): クラスター・EC2インスタンスの管理が必要。最も自由度が高い反面、設定量が多い
・AWS Fargate: EC2管理が不要になったECS。ただしタスク定義・ALB・IAM設定は自分で行う必要がある
・AWS Elastic Beanstalk: コードをアップロードするだけの簡易PaaS。ただしコンテナ(Docker)との親和性がやや低く、細かいチューニングに限界がある
・AWS App Runner: コンテナ特化のフルマネージドPaaS。Fargateの煩雑さとElastic Beanstalkのコンテナ非親和性を同時に解消

「コンテナ特化のElastic Beanstalk」と表現するとイメージしやすいです。内部的にはFargate上で動作していますが、利用者からは「ソースを渡したら動く」という体験になります。

App Runnerのアーキテクチャと仕組み

1. ソースの指定方法

App Runnerのソースは2パターンから選べます。

・コンテナイメージ(Amazon ECR): ECRに登録済みのDockerイメージを直接指定する。CI/CDパイプラインでビルド済みのイメージを使う本番ワークフローに最適
・ソースコードリポジトリ: GitHub/Bitbucketのリポジトリを接続し、App Runner側でビルドからデプロイまで実行する。Node.js・Python・Java・Go等に対応。開発初期のプロトタイプに便利

本番環境ではECRイメージの使用が主流です。CI/CDパイプラインでビルドしたイメージをECRにプッシュ→App Runnerが新イメージを自動検出してデプロイ、という流れが作りやすいためです。ECRの基本については「Amazon ECR(Elastic Container Registry)入門」をあわせてご覧ください。

2. App Runnerが自動で整えるもの

App Runnerがプロビジョニングしてくれる要素は次のとおりです。

・HTTPSエンドポイント: xxxxxx.ap-northeast-1.awsapprunner.com 形式のURLが自動発行される(独自ドメインへの紐付けも可能)
・SSL/TLS証明書: ACMと連携して自動発行・自動更新
・ロードバランサー: ALBに相当するレイヤーが内部で動作。複数インスタンスへのリクエスト分散も自動
・オートスケーリング: 同時リクエスト数に応じてインスタンスを自動増減
・ヘルスチェック: HTTPエンドポイントへの定期チェックが標準で有効。不健全なインスタンスは自動的に入れ替え
・ロールバック: デプロイ失敗時は前バージョンに自動ロールバック

オンプレで同等の仕組みを揃えるには、Nginx設定・Let’s Encrypt自動更新・keepalivedによる冗長化・監視スクリプトなど膨大な手間がかかっていたはずです。App Runnerはそれを数分の設定で置き換えます。

3. VPCコネクタ(プライベート接続)

デフォルトではApp RunnerのインスタンスはAWSマネージドVPC上で動作し、パブリックインターネット経由でバックエンドに接続します。自分のVPC内のRDSやElastiCacheに接続するには「VPCコネクタ」の設定が必要です。

VPCコネクタはENIを通じてサブネットに直接接続するため、NAT Gatewayは不要です。RDS側のセキュリティグループでVPCコネクタのセキュリティグループからのインバウンドのみ許可することで、アクセス経路を絞り込めます。

料金の仕組みと試算(2026年時点)

App Runnerの料金は「アクティブ(リクエスト処理中)」と「プロビジョンド(待機中)」の2段階で課金されます。

インスタンス状態 vCPU料金 メモリ料金
アクティブ(リクエスト処理中) $0.064/vCPU・時間 $0.007/GB・時間
プロビジョンド(常時起動・待機中) $0.0064/vCPU・時間 $0.0007/GB・時間

プロビジョンドインスタンスは「コールドスタートを防ぐための常時起動インスタンス」です。0に設定すると完全従量課金になる代わりに、長時間アクセスがなかった後の初回リクエストで数十秒の遅延(コールドスタート)が発生します。

月額コスト試算例(1 vCPU / 2 GB / プロビジョンド1インスタンス常時起動 / 日中8時間アクティブ / 月30日)

# アクティブ時間の料金(8時間/日 × 30日) vCPU: $0.064 × 8時間 × 30日 = $15.36 メモリ: $0.007 × 2GB × 8時間 × 30日 = $3.36 # プロビジョンド時間の料金(16時間/日 × 30日、1インスタンス) vCPU: $0.0064 × 16時間 × 30日 = $3.07 メモリ: $0.0007 × 2GB × 16時間 × 30日 = $0.67 # 月額合計: 約 $22.5(約3,500円/月、1ドル=155円換算)

小規模APIであれば月数千円で運用できます。ECS Fargateと比較した場合、ALBの固定費($16/月~)がないため、小規模サービスではApp Runnerが有利なケースが多いです。一方、アクティブインスタンスが常時多数必要な大規模サービスではFargateのほうが割安になる場合があります。

なお、独自ドメイン割り当て自体は無料ですが、リクエスト料金(月100万件超で$0.10/100万件)とビルド料金(ソースコードからのビルド時はビルド時間分の課金)も試算に含めてください。

ECS Fargate・Elastic Beanstalkとの比較と使い分け

観点 App Runner ECS Fargate Elastic Beanstalk
設定の複雑さ 低い(コンソール数画面) 高い(タスク定義・ALB・IAM等) 中程度
コンテナ対応 ◎(Docker/ECRネイティブ) ◎(Docker/ECRネイティブ) △(追加設定が必要)
サイドカーコンテナ 非対応 対応 △(Dockerrun.aws.jsonで可)
オートスケーリング 自動(リクエスト数ベース) 要設定(CPU・リクエスト数等) 要設定
VPC設定の細かさ 低い(VPCコネクタのみ) 高い(サブネット・SG・エンドポイント等) 中程度
小規模時のコスト 有利(ALB固定費なし) やや高い(ALB $16/月~) 条件次第
向くケース PoC・社内ツール・小規模API 大規模・サイドカー必要・細かい制御 非コンテナの既存Webアプリ移行

使い分けの判断基準は「設定に割ける工数」と「スケール要件」の2軸です。PoCや社内ツール、月間リクエストが少ないAPIであればApp Runner一択です。大規模サービスや複数コンテナのサイドカー構成(ロギングサイドカー、Envoyサイドカー等)が必要なケースはECS Fargateが適切です。

ECS FargateとECS全般については「AWS Fargate入門」と「Amazon ECS入門」を、CI/CDとの連携については「CI/CDとは何か?」をあわせてご覧ください。

ECRイメージからのデプロイ手順

1. IAMアクセスロールの準備

App RunnerがECRからイメージをプルするためのIAMロールが必要です。マネジメントコンソールからサービスを作成する際に「新しいサービスロールを作成」を選ぶと自動で作成されます。事前にCLIで作成する場合は、以下の信頼ポリシーを設定します。

# IAMロールの信頼ポリシー(App RunnerがECRにアクセスするため) { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "build.apprunner.amazonaws.com" }, "Action": "sts:AssumeRole" }] } # アタッチするマネージドポリシー: AmazonEC2ContainerRegistryReadOnly

2. App Runnerサービスの作成(AWS CLI)

# AWS CLI: App Runnerサービスの作成(ECRイメージ指定) aws apprunner create-service \ --service-name my-api \ --source-configuration '{ "ImageRepository": { "ImageIdentifier": "123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/my-api:latest", "ImageRepositoryType": "ECR", "ImageConfiguration": { "Port": "8080" } }, "AutoDeploymentsEnabled": true, "AuthenticationConfiguration": { "AccessRoleArn": "arn:aws:iam::123456789012:role/AppRunnerECRAccessRole" } }' \ --instance-configuration '{"Cpu":"1 vCPU","Memory":"2 GB"}' \ --health-check-configuration '{"Protocol":"HTTP","Path":"/health","Interval":10}' \ --region ap-northeast-1

3. 独自ドメインの設定

App Runnerが発行するデフォルトのエンドポイントは xxxxxx.ap-northeast-1.awsapprunner.com 形式です。サービス詳細の「カスタムドメイン」タブから独自ドメインを追加できます。Route 53でホストゾーンを管理している場合、必要なCNAMEレコードが自動で追加されます。証明書の発行・検証は数分で完了します。

応用・実務Tips

Tip 1: シークレットの安全な注入
App RunnerはAWS Secrets ManagerおよびSSM Parameter Storeと連携し、シークレット値を環境変数として注入できます。Dockerイメージにパスワードやトークンを埋め込む必要がなく、ローテーションもAWS側で管理できます。

Tip 2: VPCコネクタでRDSに接続する
VPCコネクタを作成する際は「最低2つのサブネット」(マルチAZ推奨)を指定します。RDS側のセキュリティグループに「VPCコネクタのセキュリティグループからのインバウンド許可」を追加することで接続が確立します。

Tip 3: プロビジョンドインスタンスでコールドスタートを防ぐ
夜間など長時間無通信の後にアクセスが来るとコールドスタートが発生します。オートスケーリング設定で「最小インスタンス数」を1以上に設定することで回避できます。追加コストは月数ドル程度です。

Tip 4: デプロイ前のローカル動作確認
App Runnerはコンテナ起動時に CMD または ENTRYPOINT を実行します。ローカルで docker run -p 8080:8080 <image> を実行し、指定ポートでHTTPレスポンスが返ることを必ず確認してからデプロイしてください。起動直後にクラッシュするイメージはデプロイ失敗になります。

よくあるトラブルと対処法

デプロイが「OPERATION_FAILED」になる
サービス詳細の「ログ」タブ→「デプロイメントログ」を確認します。多い原因は①コンテナが指定ポートでHTTPを返さない、②ECRへのIAMアクセス権不足、③コンテナ起動直後にクラッシュ(環境変数の設定漏れ等)の3つです。

VPC内のRDSに接続できない
VPCコネクタが設定されているか確認します。RDS側のセキュリティグループに「VPCコネクタのセキュリティグループ(sg-xxxxxx)からポート5432(またはMySQL 3306)のインバウンドを許可」するルールが追加されているかを見直してください。

初回アクセスが異常に遅い
コールドスタートが原因です。オートスケーリング設定の「最小インスタンス数」を確認してください。0の場合はアイドル後にインスタンスがシャットダウンするため、応答まで30~60秒かかることがあります。

ECRのlatestタグ更新後に自動デプロイされない
App Runnerサービスの設定で「自動デプロイ有効化」がオンになっているか確認します。ECRリポジトリ側の設定ではなく、App Runnerサービス設定内の項目であることに注意してください。

AWS App Runner入門|コンテナWebアプリをサーバー管理ゼロでデプロイする仕組みと料金・ECS Fargateとの使い分けガイド - まとめ

本記事のまとめ

AWS App Runnerは、コンテナWebアプリを最小の設定コストで本番稼働させたいケースに非常に有効です。ALB・SSL証明書・オートスケーリングの設定を省略できるため、開発者の生産性が大きく上がります。

ユースケース 推奨サービス 主な理由
PoC・社内ツール・小規模API App Runner 設定が最小限、ALB固定費なし
大規模トラフィック・複雑な構成 ECS Fargate 細かいネットワーク制御とサイドカー対応
既存非コンテナWebアプリの移行 Elastic Beanstalk 言語ランタイムで手軽にPaaS化

まずはECRにイメージをプッシュして、App Runnerサービスを作成してみてください。設定が完了すればHTTPSエンドポイントが数分で手に入ります。コンテナをAWSで使い始める最初の一歩として、App Runnerは最適な選択肢です。

PR

Docker/Kubernetes実践コンテナ開発入門 改訂新版(山田明憲/技術評論社)

DockerfileからKubernetes本番運用まで体系的に学べる定番書。App Runnerで動かすコンテナイメージの作り方を基礎から固めたいエンジニアにおすすめです。

関連記事をもっと読む

同じテーマの記事をまとめています。あわせて読みたい記事はこちらからご覧いただけます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次