🐳
突然AWS CDKでdockerイメージが取得できなくなった話
タイトルの通りなのですが、CDKでdiffコマンドなどを打とうとしたとき、以下のように403エラーが返ってくるようになったことがありました。
[+] Building 0.7s (3/3) FINISHED
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 1.30kB 0.0s
=> ERROR [internal] load metadata for public.ecr.aws/sam/build-nodejs16.x:latest 0.6s
------
> [internal] load metadata for public.ecr.aws/sam/build-nodejs16.x:latest:
------
Dockerfile:4
--------------------
2 | # passed as build arg. The default allows to do `docker build .` when testing.
3 | ARG IMAGE=public.ecr.aws/sam/build-nodejs18.x
4 | >>> FROM $IMAGE
5 |
6 | # Install yarn
--------------------
ERROR: failed to solve: public.ecr.aws/sam/build-nodejs16.x: pulling from host public.ecr.aws failed with status code [manifests latest]: 403 Forbidden
dockerのログインをやってみる
この手のイメージの取得エラーはECRのpublicにアクセスできないときに出るエラーに似ていたので、ログインを試してみました。
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
ログインには成功したものの、結果は変わらず。
手動でpullしてくる
色々試してましたが、手動でpullしようと思いました。
docker pull public.ecr.aws/sam/build-nodejs16.x --platform="linux/amd64"
--platformはつけておきましょう。私はM1だったのでarmビルドが最初降ってきて解決しなかったためです。
何故かこのpullは403で失敗せずに正しくpullする事ができました。
その後再度diffをしてみたら正しく取得できるようになったのでこれで解決出来たんですが何だったんでしょうね。この問題が起きる前後でDocker Desktopのバージョンアップをしていたのでおそらくその辺りが原因っぽい感じはあるのですが謎です。
Discussion