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
これで無事動いた。