😡

GIthub ActionsのECR接続エラーについて

2024/08/28に公開

ページ概要

Github Actionsを使用してECRにPushする際、エラーが起きた。
今まで起きてなかったエラーではあったが、IAMに関係するエラーで有り無駄にハマったので記録に残す。
主に今までIAMをガバ設定していた人向けになる。

エラー内容

Error: User: arn:aws:sts::123456789012:assumed-role/ECR/ECR is not authorized to perform: ecr:GetAuthorizationToken on resource: * because no identity-based policy allows the ecr:GetAuthorizationToken action

結論

IAMのポリシーで以下の様に全てのリソースに対してecr:GetAuthorizationTokenを許可する必要があった。
ここのon resource: *の意味が読みきれずに延々と彷徨っていた。

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Sid":"GetAuthorizationToken",
         "Effect":"Allow",
         "Action":[
            "ecr:GetAuthorizationToken"
         ],
         "Resource":"*"
      }
   ]
}

詳細

今回はリポジトリ限定する形でIAMを設定する様にしていた。
そのため、Resourceを"Resource":"arn:aws:ecr:us-east-1:123456789012:repository/my-repo"の様に設定していたがエラーが続いた。

しかし、ecr:GetAuthorizationTokenに限っては全てのリソースを対象にする必要がある。
何故全てを対象にする必要があるかまでは追えきれなかった。

参考にすべき情報

AWSのドキュメントにAmazon Elastic Container Registry のアイデンティティベースのポリシーの例が有り、この中の「1 つの Amazon ECR リポジトリへのアクセス」を参考にすると良い。

Discussion