LoginSignup
0
0

More than 1 year has passed since last update.

【AWS】ECRのpublicへpushする方法

Last updated at Posted at 2021-08-21

はじめに

2020年12月にできたパブリックリポジトリへプッシュする方法です。

ECRプライベートリポジトリへはイメージをプッシュしたことありましたが、
いくつかつまずいたのでこのポイントを載せます!

・AWS-CLIのバージョン
・IAM設定

AWSCLIのバージョンアップ

バージョン確認。

$ aws --version
aws-cli/2.0.8 Python/*****

私の場合はバージョンが古く後ほど指定するコマンドが認識されませんでしたので、
先にバージョンアップします。

公式ドキュメントの方法でバージョンアップ。
macOS での AWS CLI バージョン 2 のインストール

$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
$ sudo installer -pkg AWSCLIV2.pkg -target /

念のため確認。

$ aws --version
aws-cli/2.2.31 Python/3.8.8 Darwin/19.6.0 exe/x86_64 prompt/off

ECRのパブリックリポジトリ作成

AWSコンソール画面からリポジトリを作成します。
サービスでElastic Container Registryを選択。

下のようにpublicタブを選択しリポジトリを作成ボタンを押して作成する。

8ab9eeb317f2b02750d559853b5d71fb

作成後リポジトリごとのURIはタグ付けやプッシュする際に使用する。

プッシュ方法

まずはリポジトリに対して認証させます。

下の図のようにプッシュコマンドの表示ボタンを押すとその方法がでます。

e11217e5ff2240baa88f08b31bfabb51

ユーザーごとに専用のコマンドが表示されるのでそれをコピペして実行します。

$ aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/(それぞれのエイリアス)

Login Succeeded

ログイン成功したらDocker Hubプライベートリポジトリと同じようにimageにタグ付けします。方法もそこに記載されています。

$ docker tag blog_app:latest public.ecr.aws/(それぞれのエイリアス)/blog_app:latest

blog_app:latestのイメージ名は読み替えてください。
タグ名変更したらプッシュします。

$ docker push public.ecr.aws/(それぞれのエイリアス)/blog_app:latest

このとき私はエラーとなりました(ToT)

An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:iam::(アカウントID):user/(ユーザー名) is not authorized to perform: ecr-public:GetAuthorizationToken on resource: *

あなたはecr-publicへ権限ありませんよとなってますが、AmazonEC2ContainerRegistryFullAccessはアタッチ済みでした。

IAM設定

IAMの既存のポリシーをよく調べてみたらAmazonElasticContainerRegistryPublicFullAccessというポリシーがありました(**)

私の検索方法が悪くなかなかこのポリシーを見つけることができませんでした。。。

395257d07e53ceeaca72c0c5292cbb10

赤線のやつです!

これで再度pushコマンドすれば無事アップロードされます!

私もECRは約半年以上振りに触ってつまずきました。
調べたら2020年末に追加された機能で その間にCLIIAMもアップデートされてたんでしょうね(^ー^;

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0