CodeBuildでECRのイメージを環境イメージに指定した時に BUILD_CONTAINER_UNABLE_TO_PULL_IMAGE でつまづいた話


結論

CodeBuild の Amazon ECR サンプル に忠実に従う

概要

CodeBuildを使ってテストを自動化したい
→ 毎回イチからイメージをビルドしてテストを走らせると時間がかかるし、お金も勿体無いよね
→ イメージの中身が変更された時だけECRにあげて、基本的にテストを走らせる時はECRに上がっているイメージを使おう

となりました。

そして、CodeBuild から ECR に push する分にはビルドプロジェクトで作成したポリシーに ECR への権限を付与したら出来たのですが、ECR のイメージをビルドプロジェクトの環境イメージに指定した場合はそれではうまく出来ませんでした。

のように「BUILD_CONTAINER_UNABLE_TO_PULL_IMAGE」が出てしまい、少し時間を使ってしまったので備忘録。

解決策

ECRをビルドプロジェクトの環境イメージに指定する場合は、ECRの画面からCodeBuildのアクセス許可をしてあげる必要がありました。

CodeBuild の Amazon ECR サンプル の通りではありますが、

  1. ECRにアクセス
  2. リポジトリを選択
  3. 左側のペインに出てくる「Permission」をクリック
  4. 「編集」をクリック
  5. 「ポリシーJSONの編集」をクリック
  6. 下記のように入力
ポリシーJSONの編集
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "CodeBuildAccess",
      "Effect": "Allow",
      "Principal": {
        "Service": "codebuild.amazonaws.com"
      },
      "Action": [
        "ecr:BatchCheckLayerAvailability",
        "ecr:BatchGetImage",
        "ecr:GetDownloadUrlForLayer"
      ]
    }
  ]
}

これできっとできるようになるhazu☆