🐳

Amazon ECR Publicにpushしたら必ずlogoutする癖をつけよう

2025/02/03に公開

パブリックリポジトリなのに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に限らず、認証が必要な作業が終わったら認証情報を破棄するのは習慣にしましょう。自戒。

引用元: Amazon ECR Public troubleshooting

Discussion