🐳
Amazon ECR Publicにpushしたら必ずlogoutする癖をつけよう
パブリックリポジトリなのにpullに失敗する
清々しい1日の始まりに、コンテナイメージのビルドに失敗する。こんな具合です。
FROM public.ecr.aws/hogefuga/hoge:fuga AS piyo
public.ecr.aws/hogefuga/hoge:fuga: failed to resolve source metadata for public.ecr.aws/hogefuga/hoge:fuga: unexpected status from HEAD request to https://public.ecr.aws/v2/hogefuga/hoge/manifests/fuga: 403 Forbidden
昨日ECR Publicにpushしたはずのイメージが403になっている??
でも同じDockerfileのCIでのビルドはうまく行っている様子。自分のローカルマシンでのビルドだけが403になっているようです。
原因は同じローカルマシンで当該リポジトリにpushした際の古いトークンが残っており、期限切れになっていたためでした。
期限切れのトークンが原因
というわけで、ECR Publicで認証が必要な作業(つまりpush)が終わったら、必ずログアウトする癖をつけましょう。
aws ecr-public get-login-password --region us-east-1 --profile | docker login --username AWS --password-stdin public.ecr.aws/hogefuga
(pushなどの認証が必要な作業)
docker logout public.ecr.aws
というかECR Publicに限らず、認証が必要な作業が終わったら認証情報を破棄するのは習慣にしましょう。自戒。
Discussion