AWS S3 への Endpoint が設定されている VPC の設定を変更したら ECR へ接続できないエラーの解決方法

Tadashi Shigeoka ·  Thu, March 30, 2023

AWS S3 への Endpoint が設定されている VPC の設定を変更したら ECR へ接続できないエラーの解決方法をご紹介します。

AWS

背景 CannotPullContainerError

CannotPullContainerError: ref pull has been retried 1 time(s): 
failed to copy: httpReadSeeker: 
failed open: unexpected status code https://xxx.dkr.ecr.ap-northeast-1.amazonaws.com/v2/xxx/blobs/sha256:xxx: 
403 Forbidden

原因 ECR のイメージレイヤー保存先は S3

調べてみると、FargateがECRにあるContainer imageを取得するためにprod-***REGION***-starport-layer-bucketと言うS3 Bucketにアクセスしている模様。これがECRの実体なのか。 参考: https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/vpc-endpoints.html#ecr-setting-up-s3-gateway

引用元: S3へのEndpointが設定されているVPCでECS(Fargate)を使う場合の注意点 - Qiita

Amazon ECR は Amazon S3 を使用してイメージレイヤーを保存するため、ゲートウェイエンドポイントが必要です。Amazon ECR からイメージをダウンロードするコンテナは、Amazon ECR にアクセスしてイメージマニフェストを取得してから Amazon S3 にアクセスして実際のイメージレイヤーをダウンロードする必要があります。​

引用元: Amazon ECR インターフェイス VPC エンドポイント (AWS PrivateLink) - Amazon ECR

以上、AWS S3 への Endpoint が設定されている VPC の設定を変更して ECR へ接続できないエラーを解決した、現場からお送りしました。