AWS App Runner 可用性の変更 - AWS App Runner

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 の重みを調整してロールバックできます。

一般的な移行には、次のステップが含まれます。

  1. 既存の App Runner サービスの設定を確認する

  2. 同じコンテナイメージを使用して ECS Express Mode サービスを作成する

  3. カスタムドメインを使用する場合、ECS Express Mode サービスに同じカスタムドメインを設定する

  4. DNS ルーティングを使用して App Runner から ECS Express Mode にトラフィックを移行する

  5. 移行を完了し、不要になった 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 レコードを移行する方法を示しています。

Route 53 加重ルーティングを使用して App Runner から ECS Express Mode に移行し、2 つのサービス間で徐々にトラフィックを移行するアーキテクチャ図。

ステップ 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 リスナールールでホストヘッダー条件を設定する例を示しています。

ECS Express Mode サービスエンドポイントとカスタムドメイン用にホストヘッダー条件が設定された Application Load Balancer リスナールールを示すコンソールのスクリーンショット。

ステップ 4: Route 53 加重ルーティングを使用してトラフィックをシフトする

App Runner サービスが既にカスタムドメインを使用している場合は、Route 53 加重ルーティングを使用してトラフィックを ECS Express Mode サービスに徐々に移行できます。加重ルーティングを使用すると、同じホスト名のトラフィックを複数のエンドポイントにルーティングできます。各エンドポイントは、独自の重みを持つ個別の DNS レコードとして定義され、Route 53 はそれらの重みに従ってリクエストを分散します。

注記

このガイドでは、Route 53 を例として使用します。別の DNS プロバイダーを使用する場合は、プロバイダーのトラフィック管理機能を使用して同等の DNS 変更を行います。

既存の App Runner レコードを加重レコードに変換します。

  1. Route 53 コンソールを開きます。

  2. ホストゾーンを選択し、ドメインのホストゾーンを選択します。

  3. 現在 App Runner を指しているホスト名の既存のレコード ( などapp.example.com) を見つけます。

  4. レコードを編集し、そのルーティングポリシー加重に変更します。

  5. Weight を に設定します 100 (これにより、すべての初期トラフィックが App Runner に送信されます)。

  6. レコード ID に、 などのわかりやすい識別子を入力しますapp-runner-service

  7. [Save changes] (変更の保存) をクリックします。

ECS Express Mode の加重レコードを作成します。

  1. 同じホストゾーンに新しいレコードを作成します。

  2. 同じレコード名を使用します (例: app.example.com)。

  3. 同じレコードタイプを使用します。

  4. ルーティングポリシー加重に設定します。

  5. Route traffic to で、Alias to Application and Classic Load Balancer を選択します。

  6. ドロップダウンから ECS Express Mode Application Load Balancer を選択します。

  7. Weight を に設定します 0 (明示的にウェイトを増やすまで、トラフィックは ECS Express Mode に流れません)。

  8. レコード ID に、 などのわかりやすい識別子を入力しますecs-express-service

  9. [レコードを作成] を選択します。

トラフィックを徐々にシフトします。

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-arn your-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 を使用して、App Runner の自動デプロイエクスペリエンスをレプリケートできます。

移行ワークフローには 3 つのステージがあります。

  1. Dockerfile を使用してコンテナイメージを構築する

  2. Amazon Elastic Container Registry などのコンテナレジストリにイメージをプッシュする

  3. ECS Express Mode にイメージをデプロイする

次の図は、このワークフローが GitHub Actions を使用してどのように機能するかを示しています。

コンテナイメージの構築、Amazon Elastic Container Registry へのプッシュ、ECS Express Mode へのデプロイのための GitHub Actions を使用した、ソースベースの App Runner サービスの ECS Express Mode への移行を示すアーキテクチャ図。

アプリケーションをコンテナ化する

アプリケーションに 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 を設定します。

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 ルーティングを使用してトラフィックをシフトし、移行を完了します。

その他のリソース