🕌
ECRパブリックリポジトリからイメージがプルできない場合の対処法
エラー内容
コンテナイメージを使用するLambda関数をデプロイするために次のようなDockerfileを作成したところ、イメージのビルド時に以下のようなエラーが発生した。
Dockerfile
FROM public.ecr.aws/lambda/go:1 as builder
# ~以下略~
bash
$ docker build --tag mytag .
[+] Building 0.8s (3/3) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 358B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> ERROR [internal] load metadata for public.ecr.aws/lambda/go:1 0.7s
------
> [internal] load metadata for public.ecr.aws/lambda/go:1:
------
failed to solve with frontend dockerfile.v0: failed to create LLB definition: unexpected status code [manifests 1]: 403 Forbidden
また、直接イメージをプルしようとすると、以下のようなエラーが発生した。
bash
$ docker pull public.ecr.aws/lambda/go:1
Error response from daemon: pull access denied for public.ecr.aws/lambda/go, repository does not exist or may require 'docker login': denied: Your authorization token has expired. Reauthenticate and try again.
解決策
ECRからログアウトして古い認証トークンを削除する。
bash
$ docker logout public.ecr.aws
Removing login credentials for public.ecr.aws
おそらく、有効期限の切れた認証情報が残ったままになっていて、それを使用してアクセスしたためエラーレスポンスを受け取っているとのこと。公式ドキュメントに全て説明がありました!
Discussion
詰まってたところでした!ありがとうございます