😡
GIthub ActionsのECR接続エラーについて
ページ概要
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