hyme

aws-ecrをv7からv9へアップグレードする

なぜやるのか

以下の記事を参考。EOLが近づいてるため。

We are deprecating the following Remote Docker images on CircleCI and will be removing them from our platform on Sept 30, 2024:

対応手順

aws-ecr@9.1.0 の実装を見る感じだと、AWS_ACCOUNT_ID が入ってれば大丈夫そう。

認証にOIDCを利用していたため、AWS_ACOUNT_IDを手動で引っ張ってくるか環境変数に追加する必要がある。 あまり環境変数に追加するのも管理上面倒になるため、都度引っ張ってくることにした。 今は aws sts get-caller-identity というのでひっぱってこれるらしい。 https://dev.classmethod.jp/articles/get-aws-account-id-with-get-caller-identity/

ということで、以下のような AWS_ACCOUNT_ID を取得するための雑な command を追加した。

set-aws-account-id:
  steps:
    - run:
        name: Set AWS Account ID
        command: |
          account_id=$(aws sts get-caller-identity \
            --query "Account" \
            --output "text")
          {
            echo "export AWS_ACCOUNT_ID=\"$(echo "$account_id")\""
          } >> "${BASH_ENV}"

その後、ECRへのログインはできたが、イメージのビルドに失敗していたので確認してみる。 どうも region が設定されていなくてレジストリのパスが不正になっていたようだった。 ということで region を追加。

      - aws-ecr/build_and_push_image:
          auth:
            - setup-build:
                env: << parameters.env >>
	      checkout: false
		  repo: << parameters.repo >>
+         region: ap-northeast-1

これで無事動いた。