スポンサーリンク

【AWS】AWS CLIでECRにログインが上手くいかなかった場合の対処方法

【AWS】AWS CLIでECRにログインが上手くいかなかった場合の対処方法AWS
【AWS】AWS CLIでECRにログインが上手くいかなかった場合の対処方法
スポンサーリンク

やりたいこと

  1. AWS CLIでECRにログインする。
  2. AWS CLIでECRにDockerイメージをプッシュする。

動作環境

OSUbuntu
バージョン22.04.3
動作環境WSL2
動作環境

前提条件

  • Linux 用 Windows サブシステム (WSL)でUbuntuをインストールしていること 
  • Dockerをインストールしていること
  • ECR Repositoryを作成していること

エラーについて

AWS CLIでECRへのログインコマンドを入力したけどログインが上手くいかない。。。

An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:iam::125083437861:user/xxxxxxx is not authorized to perform: ecr:GetAuthorizationToken on resource: * because no identity-based policy allows the ecr:GetAuthorizationToken action

ECRへ接続する前に認証トークンを取得してからログインするため、ecr:GetAuthorizationToken アクションが許可されていないとログインできないようです。

because no identity-based policy allows the ecr:GetAuthorizationToken action

ecr:GetAuthorizationTokenは以下のAWS管理ポリシーに含まれています。

  • AmazonElasticContainerRegistryPublicFullAccess
  • AmazonElasticContainerRegistryPublicPowerUser

しかしユーザにアタッチしてみましたが上手くいきませんできた。。。

ECRへのアクセス権を付与するためのポリシー設定が必要なようです。

ECRにログインするための設定

ECRへのアクセス権を付与するためポリシーを作成します。

Amazon Elastic Container Registry のアイデンティティベースのポリシーの例 - Amazon ECR
デフォルトでは、ユーザーおよびロールには Amazon ECR リソースを作成または変更するアクセス許可がありません。また、、 AWS Command Line Interface (AWS CLI) AWS Management Console、または AWS API を使用してタスクを実行することはできません。IA...

赤色箇所のarnはイメージをプッシュしたいリポジトリに修正する。

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Sid":"ListImagesInRepository",
         "Effect":"Allow",
         "Action":[
            "ecr:ListImages"
         ],
         "Resource":"arn:aws:ecr:ap-northeast-1:123456789012:repository/test"
      },
      {
         "Sid":"GetAuthorizationToken",
         "Effect":"Allow",
         "Action":[
            "ecr:GetAuthorizationToken"
         ],
         "Resource":"*"
      },
      {
         "Sid":"ManageRepositoryContents",
         "Effect":"Allow",
         "Action":[
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:GetRepositoryPolicy",
                "ecr:DescribeRepositories",
                "ecr:ListImages",
                "ecr:DescribeImages",
                "ecr:BatchGetImage",
                "ecr:InitiateLayerUpload",
                "ecr:UploadLayerPart",
                "ecr:CompleteLayerUpload",
                "ecr:PutImage"
         ],
         "Resource":"arn:aws:ecr:ap-northeast-1:123456789012:repository/test"
      }
   ]
}

IAMユーザに作成したポリシーをアタッチしたらOK

設定ができたらマネジメントコンソールのECRリポジトリのプッシュコマンドの表示を押下する。

以下のコマンド一覧が表示されるので手順に従ってコマンドを入力する。

  • ECRへのログイン
  • Dockerイメージの構築
  • Dockerイメージのタグ付け
  • Dockerイメージをプッシュ

ECRへのログイン

aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin 125083437861.dkr.ecr.ap-northeast-1.amazonaws.com

Dockerイメージの構築

docker build -t test .

Dockerイメージのタグ付け

docker tag test:latest 125083437861.dkr.ecr.ap-northeast-1.amazonaws.com/test:latest

Dockerイメージをプッシュ

docker push 125083437861.dkr.ecr.ap-northeast-1.amazonaws.com/test:latest

マネジメントコンソールからプッシュできていることの確認!成功!

タイトルとURLをコピーしました