🕌

ECRパブリックリポジトリからイメージがプルできない場合の対処法

2022/08/14に公開1

エラー内容

コンテナイメージを使用する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

1mono21mono2

詰まってたところでした!ありがとうございます