【AWS】Amazon ECR ~ AWS ECR Public Gallery ~

■ はじめに

AWS ECR Public Gallery ってのを知ったのでメモ。

目次

【1】AWS ECR Public Gallery
【2】IAMロール
【3】使用上の注意
 1)ECR Public から VPC エンドポイント経由で Pull はできない
【4】使い方
 1)docker login
 2)dockerfile での利用
 3)docker pull コマンド での利用

【1】AWS ECR Public Gallery

* AWS の閉じたネットワーク内で Docker オフィシャルイメージを
 落とすことができる
 => Docker Hubの代わりに使える

https://aws.amazon.com/jp/blogs/news/docker-official-images-now-available-on-amazon-elastic-container-registry-public/

【2】IAMロール

* ECR Public Galleryを利用するためには以下が必要
 + ecr-public:GetAuthorizationToken
 + sts:GetServiceBearerToken

https://docs.aws.amazon.com/AmazonECR/latest/public/docker-pull-ecr-image.html
https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/public/public-images.html

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ForPullingFromAwsEcrPublicGallery",
      "Effect": "Allow",
      "Action": [
        "ecr-public:GetAuthorizationToken",
        "sts:GetServiceBearerToken"
      ],
      "Resource": "arn:aws:iam::123456789012:role/*"
    }
  ]
}

【3】使用上の注意

1)ECR Public から VPC エンドポイント経由で Pull はできない

現状 ECR Public の VPC エンドポイント(※1)は未サポート(※2)のため
VPC エンドポイント経由で Pull はできない

※1:ECR Public の VPC エンドポイント
https://docs.aws.amazon.com/ja_jp/general/latest/gr/ecr-public.html

[us-west-2 の場合]
* ecr-public.us-west-2.amazonaws.com
* api.ecr-public.us-west-2.amazonaws.com

※2:ECR Public の VPC エンドポイント未サポート
https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/vpc-endpoints.html

より抜粋
~~~~~~~~~
現在、VPC エンドポイントは Amazon ECR パブリックリポジトリをサポートしていません。
プルスルーキャッシュルールを使用して、VPC エンドポイントと同じリージョンにある
プライベートリポジトリでパブリックイメージをホストすることを検討してください。
詳細については、「プルスルーキャッシュルールの使用」を参照してください。
~~~~~~~~~
 => 「プルスルーキャッシュルール」については、
  以下の関連記事を参照のこと

Amazon ECR ~ pull through cache rules ~
https://dk521123.hatenablog.com/entry/2024/04/09/141310

【4】使い方

* 以下のサイトから欲しいDocker イメージを検索する

https://gallery.ecr.aws/

■ flink を例にすると

[1] 「flink」で検索すると以下がヒット。

https://gallery.ecr.aws/docker/library/flink

[2] 欲しいバージョン(今回の場合「flink:1.18.0」)をフィルタリングし
 「Copy」ボタン押下
 => 「public.ecr.aws/docker/library/flink:1.18.0」

1)docker login

aws ecr-public get-login-password --region us-west-2 | docker login --username AWS --password-stdin public.ecr.aws

https://docs.aws.amazon.com/AmazonECR/latest/public/public-registries.html

2)dockerfile での利用

# FROM flink:1.18.0
FROM public.ecr.aws/docker/library/flink:1.18.0

3)docker pull コマンド での利用

# docker pull flink:1.18.0
docker pull public.ecr.aws/docker/library/flink:1.18.0

参考文献

https://zenn.dev/bicstone/articles/amazon-ecr-public-gallery
https://tech.actindi.net/2022/01/11/081720
https://qiita.com/t_tsuchida/items/d3c284aac0f84a597c70
https://qiita.com/y-suzuki-biz/items/430a14482a29aac6c06b

関連記事

Amazon ECR ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/05/22/165711
Amazon ECR ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/05/26/142645
Amazon ECR ~ AWS CLI
https://dk521123.hatenablog.com/entry/2024/01/05/000000
Amazon ECR ~ boto3 ~
https://dk521123.hatenablog.com/entry/2024/01/31/014010
Amazon ECR ~ Dockerイメージを Pull & Push ~
https://dk521123.hatenablog.com/entry/2023/12/02/024631
Amazon ECR ~ pull through cache rules ~
https://dk521123.hatenablog.com/entry/2024/04/09/141310
Amazon ECR ~ 脆弱性診断 / Amazon Inspector ~
https://dk521123.hatenablog.com/entry/2024/01/22/210831
Terraform ~ AWS ECR ~
https://dk521123.hatenablog.com/entry/2023/05/23/002314
Amazon ECR でのトラブルシューティング
https://dk521123.hatenablog.com/entry/2020/05/24/000000