AWS App Runner は、2026 年 4 月 30 日以降、新規のお客様に公開されなくなります。App Runner を使用する場合は、その日付より前にサインアップします。既存のお客様は、通常どおりサービスを引き続き使用できます。詳細については、「AWS App Runner 可用性の変更」を参照してください。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS App Runner 可用性の変更
慎重に検討した結果、2026 年 4 月 30 日から新規顧客 AWS App Runner を閉鎖することになりました。既存の AWS App Runner お客様は、新しいリソースやサービスの作成など、通常どおりサービスを引き続き使用できます。 AWS は引き続きセキュリティと可用性に投資しますが AWS App Runner、新機能を導入する予定はありません。
移行時に Amazon Elastic Container Service (Amazon ECS) Express Mode を試すことをお勧めします AWS App Runner。Amazon ECS Express Mode は、App Runner の運用上のシンプルさを維持しながら、より広範な Amazon ECS 機能セットへのアクセスを提供します。1 回の API コールで、コンテナイメージと 2 つの IAM ロールを提供し、Amazon ECS は、Fargate の ECS サービス、Application Load Balancer、自動スケーリング、ネットワークなど、完全なアプリケーションスタックを AWS アカウントにプロビジョニングします。Amazon ECS Express Mode の使用には追加料金はかかりません。アプリケーションを実行するために作成された基盤となる AWS リソースに対してのみ料金が発生します。
このガイドでは、既存の App Runner サービスを ECS Express Mode に移行し、DNS ルーティングを使用してトラフィックを徐々に移行する方法について説明します。
移行の概要
このガイドでは、DNS 加重ルーティングを使用した Blue/Green デプロイアプローチを使用して、App Runner から ECS Express Mode にトラフィックを移行します。両方のサービスは移行中に同時に実行されます。Amazon Route 53 (または DNS プロバイダー) を使用して、トラフィックを App Runner サービスから ECS Express Mode サービスに徐々に移行します。最初はわずかな割合から始まり、時間の経過とともに増加します。このアプローチによりダウンタイムが最小限に抑えられ、問題が発生した場合は DNS の重みを調整してロールバックできます。
一般的な移行には、次のステップが含まれます。
既存の App Runner サービスの設定を確認する
同じコンテナイメージを使用して ECS Express Mode サービスを作成する
カスタムドメインを使用する場合、ECS Express Mode サービスに同じカスタムドメインを設定する
DNS ルーティングを使用して App Runner から ECS Express Mode にトラフィックを移行する
移行を完了し、不要になった App Runner サービスを削除する
前提条件
開始する前に、以下があることを確認してください。
Amazon ECS、、Amazon Route 53 AWS App Runner、Application Load Balancer リソースを作成および管理するための適切な AWS Identity and Access Management アクセス許可を持つ AWS アカウント
AWS CLI AWS アカウントの認証情報を使用してインストールおよび設定されている
ECS Express Mode にデプロイするために Amazon Elastic Container Registry (または別のコンテナレジストリ) に保存されているコンテナイメージ
ECS Express Mode に必要な IAM ロール: Amazon ECS タスク実行
ecsTaskExecutionRole用および ECS Express Mode インフラストラクチャプロビジョニングecsInfrastructureRoleForExpressServices用
移行中に既存のカスタムドメインを保持する場合は、以下も必要です。
Amazon Route 53 またはサードパーティーのドメインレジストラを使用して
app.example.com、 など、ユーザーが管理する登録済みドメイン名カスタムドメインに一致する AWS Certificate Manager (ACM) の SSL/TLS 証明書。リソースをデプロイ AWS リージョン するのと同じ でパブリック ACM 証明書をリクエストします。App Runner と Amazon ECS Express Mode の両方で、カスタムドメインで HTTPS アクセスを有効にするには ACM 証明書が必要です。
[開始する前に]
-
コンテナイメージの要件 — ECS Express Mode はコンテナイメージをデプロイします。App Runner サービスがソースコードからデプロイされている場合は、まずコンテナイメージを作成し、Amazon Elastic Container Registry などのレジストリにプッシュするビルドステップを追加します。次に、そのイメージを ECS Express Mode にデプロイします。ソースベースのデプロイの移行の詳細については、ソースベースのデプロイの移行「」を参照してください。
-
ドメインの動作 — App Runner サービスが などのカスタムドメインを既に使用している場合は、移行中に同じホスト名を再利用し
app.example.com、DNS を更新して App Runner と ECS Express Mode の間でトラフィックを徐々に移行できます。App Runner サービスがデフォルトの App Runner サービス URL のみを使用している場合、ECS Express Mode サービスには異なるエンドポイントがあります。この場合、段階的なトラフィックシフトに使用できる共有ホスト名はありません。ECS Express Mode サービスを作成して検証し、新しいエンドポイントを使用するようにクライアントまたは DNS を更新する必要があります。
移行のチュートリアル
次の図は、Route 53 を使用して App Runner サービスと ECS Express Mode サービス間で DNS レコードを移行する方法を示しています。
ステップ 1: 既存の App Runner 設定を確認する
App Runner コンソールで、既存のサービスを確認し、続行する値を書き留めます。少なくとも、次の点に注意してください。
コンテナイメージ
アプリケーションポート
環境変数
設定されている場合、カスタムドメイン名
設定されている場合、カスタムドメインに関連付けられた ACM 証明書
新しいサービスに引き継ぐその他のランタイム設定を確認することもできます。
カスタムドメインの詳細については、「」を参照してくださいApp Runner サービスのカスタムドメイン名の管理。
ステップ 2: ECS Express Mode サービスを作成する
App Runner サービスで使用されるのと同じコンテナイメージを使用して ECS Express Mode サービスを作成します。または AWS マネジメントコンソール を使用してサービスを作成できますAWS CLI。
CLI コマンドの例:
aws ecs create-express-gateway-service \ --execution-role-arn arn:aws:iam::123456789012:role/ecsTaskExecutionRole \ --infrastructure-role-arn arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices \ --primary-container '{ "image": "123456789012.dkr.ecr.us-east-1.amazonaws.com/my-app:latest", "containerPort": 8080, "environment": [{ "name": "ENV_VAR_NAME", "value": "value" }] }' \ --service-name "my-application" \ --health-check-path "/" \ --scaling-target '{"minTaskCount":1,"maxTaskCount":4}' \ --monitor-resources
イメージ、ポート、環境変数、スケーリング値を App Runner サービスの値に置き換えます。
このコマンドは、Fargate の ECS サービス、ターゲットグループとヘルスチェックを備えた Application Load Balancer、自動スケーリングポリシー、セキュリティグループとネットワーク設定、デフォルト URL など、 AWS アカウントの完全なアプリケーションスタックをプロビジョニングします。
プロビジョニングには通常 3~5 分かかります。Amazon ECS コンソールのリソースタブで進行状況を追跡できます。
完了したら、コンソールに表示されるデフォルトの URL を使用して ECS Express Mode サービスをテストします。トラフィックシフトに進む前に、アプリケーションが正しく動作することを確認します。
ステップ 3: ECS Express Mode のカスタムドメインを設定する
App Runner サービスがカスタムドメインを使用している場合は、トラフィックを移行する前に ECS Express Mode サービスに同じカスタムドメインを設定します。このステップでは、ECS Express Mode サービス用に作成された Application Load Balancer を設定して、ドメインのトラフィックを受け入れ、HTTPS に ACM 証明書を使用します。
Application Load Balancer リスナールールで、カスタムドメインをホストヘッダー条件として追加します。App Runner サービスに関連付けたのと同じドメイン名を使用します (例:
app.example.com)。これにより、ドメインから ECS Express Mode ターゲットグループにトラフィックをルーティングするように Application Load Balancer に指示します。Application Load Balancer HTTPS リスナーに SSL 証明書を追加します。ステップ 1 でメモした ACM 証明書を HTTPS リスナーに追加します。
詳細な手順については、「Amazon ECS デベロッパーガイド」の「サービスへのカスタムドメインの追加」を参照してください。
次の図は、Application Load Balancer リスナールールでホストヘッダー条件を設定する例を示しています。
ステップ 4: Route 53 加重ルーティングを使用してトラフィックをシフトする
App Runner サービスが既にカスタムドメインを使用している場合は、Route 53 加重ルーティングを使用してトラフィックを ECS Express Mode サービスに徐々に移行できます。加重ルーティングを使用すると、同じホスト名のトラフィックを複数のエンドポイントにルーティングできます。各エンドポイントは、独自の重みを持つ個別の DNS レコードとして定義され、Route 53 はそれらの重みに従ってリクエストを分散します。
注記
このガイドでは、Route 53 を例として使用します。別の DNS プロバイダーを使用する場合は、プロバイダーのトラフィック管理機能を使用して同等の DNS 変更を行います。
既存の App Runner レコードを加重レコードに変換します。
Route 53 コンソールを開きます。
ホストゾーンを選択し、ドメインのホストゾーンを選択します。
現在 App Runner を指しているホスト名の既存のレコード ( など
app.example.com) を見つけます。レコードを編集し、そのルーティングポリシーを加重に変更します。
Weight を に設定します
100(これにより、すべての初期トラフィックが App Runner に送信されます)。レコード ID に、 などのわかりやすい識別子を入力します
app-runner-service。[Save changes] (変更の保存) をクリックします。
ECS Express Mode の加重レコードを作成します。
同じホストゾーンに新しいレコードを作成します。
同じレコード名を使用します (例:
app.example.com)。同じレコードタイプを使用します。
ルーティングポリシーを加重に設定します。
Route traffic to で、Alias to Application and Classic Load Balancer を選択します。
ドロップダウンから ECS Express Mode Application Load Balancer を選択します。
Weight を に設定します
0(明示的にウェイトを増やすまで、トラフィックは ECS Express Mode に流れません)。レコード ID に、 などのわかりやすい識別子を入力します
ecs-express-service。[レコードを作成] を選択します。
トラフィックを徐々にシフトします。
DNS レコードを設定したら、ECS Express Mode の重みを増やしながら、App Runner の重みを比例的に減らしてトラフィックの移行を開始します。推奨されるアプローチ:
ECS Express Mode を 10 に設定/App Runner を 90 に設定
リクエストを正常に処理するサービスをモニタリングおよび検証する
を 25 / 75 に増やす
を 50 / 50 に増やす
を 75 / 25 に増やす
100 / 0 で完了
各ステップで、追加のトラフィックを移行する前にアプリケーションをテストします。いずれかの時点で問題が発生した場合は、重みを以前の値に調整してロールバックします。
重要
App Runner サービスを検証期間 (24~48 時間など) にわたって実行し、DNS の変更がグローバルに伝達されたことを確認し、必要に応じてロールバックオプションを提供します。問題が発生した場合は、Route 53 の重みをすばやく App Runner に戻すことができます。
ステップ 5: 移行を完了する
ECS Express Mode サービスが本番トラフィックを正しく処理し、検証期間が経過したことを確認したら、移行を完了します。
Route 53 で、App Runner を指す加重レコードを削除します (または重みを 0 に設定します)。
App Runner サービスからカスタムドメインの関連付けを削除します。
App Runner サービスを削除します。
aws apprunner delete-service --service-arnyour-app-runner-service-arn
また、不要になったリソースを削除することを検討してください。
App Runner の Route 53 加重ルーティングレコード
Amazon Elastic Container Registry の未使用のコンテナイメージ
不要になった場合に App Runner 専用に作成された IAM ロール
注記
サービスが本番環境で実行されている場合は、ECS Express Mode サービス、Application Load Balancer、または関連するリソースを削除しないでください。
ソースベースのデプロイの移行
既存の App Runner サービスがコンテナイメージではなくソースコードからデプロイされている場合は、ECS Express Mode にデプロイする前にコンテナ化ステップを追加する必要があります。App Runner とは異なり、ECS Express Mode にはコンテナイメージが必要です。ただし、GitHub Actions などの CI/CD ツールと Amazon ECS Deploy Express Service GitHub Action
移行ワークフローには 3 つのステージがあります。
Dockerfile を使用してコンテナイメージを構築する
Amazon Elastic Container Registry などのコンテナレジストリにイメージをプッシュする
ECS Express Mode にイメージをデプロイする
次の図は、このワークフローが GitHub Actions を使用してどのように機能するかを示しています。
アプリケーションをコンテナ化する
アプリケーションに Dockerfile がまだない場合は、リポジトリルートに作成します。Dockerfile は、ソースコードを構築してコンテナイメージにパッケージ化するための設計図として機能します。
リポジトリ構造には以下を含める必要があります。
your-app/ ├── src/ # Application source code ├── Dockerfile # Container build instructions ├── package.json # Dependencies and scripts └── .github/ # GitHub configuration └── workflows/ # GitHub Actions workflows └── deploy.yml # ECS Express Mode deployment workflow
自動デプロイ用に GitHub Actions を設定する
コードプッシュ時に App Runner の自動デプロイをレプリケートするには、以下を使用して GitHub Actions を設定します。
OpenID Connect (OIDC) プロバイダー
を作成して、GitHub Actions が IAM ロールを引き受けることを許可する ECS Express Mode と Amazon Elastic Container Registry のアクセス許可を持つ IAM ロール
を作成する https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_ECS.html ECS Express Mode に必要な 2 つの IAM ロールを作成する
ECS リソースの GitHub 環境変数を作成する:
ECS_SERVICE、ECS_CLUSTER、AWS_REGION、AWS_ACCOUNT_ID、およびECR_REPOSITORY
GitHub Actions ワークフローの例
でワークフローファイルを作成します.github/workflows/deploy.yml。
name: Build and Deploy to ECS on: push: branches: [ main ] env: AWS_REGION: ${{ vars.AWS_REGION }} AWS_ACCOUNT_ID: ${{ vars.AWS_ACCOUNT_ID }} ECR_REPOSITORY: ${{ vars.ECR_REPOSITORY }} ECS_SERVICE: ${{ vars.ECS_SERVICE }} ECS_CLUSTER: ${{ vars.ECS_CLUSTER }} jobs: deploy: name: Deploy runs-on: ubuntu-latest environment: production permissions: id-token: write contents: read steps: - name: Checkout uses: actions/checkout@v6 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v5 with: aws-region: ${{ env.AWS_REGION }} role-to-assume: arn:aws:iam::${{ env.AWS_ACCOUNT_ID }}:role/github-actions-ecs-role role-session-name: GitHubActionsECSDeployment - name: Login to Amazon ECR id: login-ecr uses: aws-actions/amazon-ecr-login@v2 - name: Get short commit hash run: echo "IMAGE_TAG=${GITHUB_SHA:0:7}" >> $GITHUB_ENV - name: Build, tag, and push image to Amazon ECR id: build-image env: ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} uses: docker/build-push-action@v6 with: context: . push: true tags: ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:latest,${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} - name: Deploy to ECS Express Mode uses: aws-actions/amazon-ecs-deploy-express-service@v1 env: ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} with: service-name: ${{ env.ECS_SERVICE }} image: ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} execution-role-arn: arn:aws:iam::${{ env.AWS_ACCOUNT_ID }}:role/ecsTaskExecutionRole infrastructure-role-arn: arn:aws:iam::${{ env.AWS_ACCOUNT_ID }}:role/ecsInfrastructureRoleForExpressServices cluster: ${{ env.ECS_CLUSTER }} container-port: 8080 environment-variables: | [ {"name": "ENV", "value": "Prod"} ] cpu: '1024' memory: '2048' health-check-path: /health min-task-count: 1 max-task-count: 4 auto-scaling-metric: AVERAGE_CPU auto-scaling-target-value: 70
メインブランチにコード変更をプッシュすると、GitHub Actions は自動的に新しいコンテナイメージを構築し、Amazon Elastic Container Registry にプッシュして、ECS Express Mode サービスにデプロイします。これにより、App Runner での自動デプロイエクスペリエンスがレプリケートされます。
ECS Express Mode サービスが実行されたら、移行チュートリアルのステップ 3~5 に従ってカスタムドメインを設定し、DNS ルーティングを使用してトラフィックをシフトし、移行を完了します。