[アップデート] App RunnerでECRイメージのクロスリージョンデプロイがサポートされました

2022.09.18

しばたです。

先日からAWS App Runnerで他リージョンのECRリポジトリにあるコンテナイメージを使ったデプロイができる様になりました。
AWSからのアナウンスは以下となります。

これまでECRイメージを使ったデプロイは

  • 同一アカウント内、同一リージョンにあるECRリポジトリのイメージ
  • 他アカウント、同一リージョンにあるECRリポジトリのイメージ

と同一リージョンにある必要があり、App Runnerサービスを複数リージョンに展開したい場合はECRリポジトリのレプリケーションを行う必要がありました。

今回の更新で新たに

  • 同一アカウント内、他リージョンにあるECRリポジトリのイメージ
  • 他アカウント、他リージョンにあるECRリポジトリのイメージ

のパターンがサポートされレプリケーションの手間が省ける様になった感じです。

試してみた

今回はシンプルに同一アカウント内の別リージョンにあるECRリポジトリを使ったデプロイを試していきます。

以前の記事で作成した環境をまだ残しているのでそのリポジトリを使います。

東京リージョンにあるmy-flask-appというECRリポジトリをデプロイ元にします。

今回は北米リージョン(バージニア北部)に新たにサービスを作ります。
マネジメントコンソールからサービスの新規作成を開始します。

ECRコンテナを選ぶ際に「参照」ボタンをクリックしても他リージョンのリポジトリは見えないのでご注意ください。

他リージョンのECRリポジトリを選ぶ際はURIを直接入力します。

あとは各種パラメーターをよしなに設定しサービスを作成します。

しばらく待てば無事サービスが開始されます。

当たり前ですがサイトの内容は東京リージョンのものと同一です。

補足 : 他アカウントECRリポジトリの場合

他アカウントのECRリポジトリを使う場合は従来通りECRリポジトリのアクセス許可を設定してください。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "SampleState",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::イメージをPullするAWSアカウントID:root"
      },
      "Action": [
        "ecr:BatchGetImage",
        "ecr:DescribeImages",
        "ecr:GetDownloadUrlForLayer"
      ]
    }
  ]
}

アクセス権が無い場合はこんな感じでイメージのPullに失敗します。

09-18-2022 06:20:26 PM [AppRunner] Failed to pull your application image. Be sure you configure your service with a valid access role to your ECR repository.

最後に

以上となります。

シンプルな内容ですがデプロイの幅が広がり良い更新だと思います。