ユーザーにECR認証を設定する際のAWSの指示に従うために、AmazonEC2ContainerRegistryFullAccess
ユーザーへのポリシー。
ただし、PCで実行しようとすると、aws ecr get-login
許可がないというエラーが表示されます。
An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:iam::ACCOUNT_NUMBER:user/MY_USER is not authorized to perform: ecr:GetAuthorizationToken on resource: *
私は何を間違えましたか?
2FAが有効になっている場合、aws ecr get-loginを使用するオプションがないことがわかりました。アカウントから2FAを削除すると、認証トークンが取得されます。
IAMロールにポリシーをアタッチする必要があります。
AmazonEC2ContainerRegistryFullAccessを添付しましたが、うまくいきました。
エラーの説明に表示されるように、ポリシーで「GetAuthorizationToken」アクションを許可する必要があります。
{
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": "ecr:GetAuthorizationToken",
"Resource": "*"
}
注:これは私の完全なポリシーではなく、ステートメントのサブセクションです。
コンテナーをリポジトリーにプッシュしようとしたときに、ECSで同じ問題が発生しました。
それを解決するために、IAMロールにこれを添付しました:AmazonECS_FullAccess
私も同じ問題を抱えていますが、以前にpermission boundary
をs3にのみ設定していたため、問題が発生しました。
permission boundary
を削除し、チャームのように機能しました
ここにすべての手順を実行した後の完全な答えがあります-ECRを使用できました
エラーには2つの意味があります。
1)ユーザーにECRポリシーがアタッチされていないため、認証されていません2)2FAを使用しており、一時セッショントークンを設定しない限り、cliの使用は安全ではないため、認証されていません
これは、アクセスを取得するためのすべてのステップのリストです(2FAの処理を含む)
2FAを有効にしている場合
aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token
を使用してセッショントークンを生成する必要があります。 arn-of-the-mfa-device
は、プロファイルの2FAセクションにあります。トークンは、デバイスから生成されたトークンです。AccessKeyId
、SecretAccessKey
、およびSessionToken
でAWS credentailsを更新します。 AWSは、いずれかのcronジョブを使用してトークンを更新することをお勧めします。つまり、それを実行している場合は、物事をテストするときに、prodリソースで2FAが有効になっていない可能性があります。 --duration-seconds
を提供することでセッションを増やすことができますが、最大36時間までです。適切な説明は authenticate-mfa-cli にあります。これは仕事をする必要があります