Amazon web services AWS ECR GetAuthorizationToken
我试图按照AWS的说明,通过向我的用户提供Amazon web services AWS ECR GetAuthorizationToken,amazon-web-services,amazon-ec2,aws-cli,amazon-ecr,Amazon Web Services,Amazon Ec2,Aws Cli,Amazon Ecr,我试图按照AWS的说明,通过向我的用户提供AmazonEC2ContainerRegistryFullAccess策略,为我的用户设置ECR授权 但是,当我尝试在PC上运行aws ecr get login时,我收到一个错误,我没有权限 An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:iam::ACCOUNT_NUMBER:user/
AmazonEC2ContainerRegistryFullAccess
策略,为我的用户设置ECR授权
但是,当我尝试在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: *
我做错了什么?您必须将策略附加到IAM角色
我连接了AmazonEC2ContainerRegistryFullAccess,它成功了 我发现,当启用2FA时,没有使用aws ecr get登录的选项,一旦我从我的帐户中删除了2FA,我就获得了授权令牌,正如错误描述中显示的那样,我必须在策略中允许操作“GetAuthorizationToken”
{
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": "ecr:GetAuthorizationToken",
"Resource": "*"
}
注意:这不是我的全部政策,而是声明的一部分 当我试图将我的容器推送到存储库中时,ECS也有同样的问题
为了解决这个问题,我将以下内容附加到我的IAM角色上:
AmazonECS\u FullAccess
以下是一个完整的答案,在我完成所有步骤后,我能够使用ECR
错误有两种含义:
1) 您未获得授权,因为您的用户没有附加ECR策略
2) 您未获得授权,因为您正在使用2FA,并且除非设置临时会话令牌,否则使用cli不安全
以下是获取访问权限的所有步骤的列表(包括处理2FA)
aws sts获取会话令牌——mfa设备的序列号arn——令牌中的令牌代码
<代码>mfa设备的arn可在您的个人资料2FA部分中找到。令牌,是从设备生成的令牌AccessKeyId
、SecretAccessKey
和SessionToken
更新aws credentails。AWS建议使用cron作业来刷新令牌,这意味着如果您正在这样做,那么您的产品资源很可能没有启用2FA。您可以通过提供持续时间秒来增加会话,但最多只能增加36小时。一个很好的解释可以在这应该可以完成任务我最终使用AmazonEC2ContainerRegistryPowerUser,这似乎是一个比完全访问更好的选择。以下是截至2019年6月我发现的政策:
我也有同样的问题,但我之前只将导致问题的
权限边界设置为s3
删除了权限边界
,它像一个魔咒一样工作这是我的人EC2InstanceProfileForImageBuilderECRContainerBuilds
对我来说:
- Effect: Allow
Sid: VisualEditor2
Action:
- ecr:GetAuthorizationToken
- ecr:BatchGetImage
- ecr:GetDownloadUrlForLayer
Resource: "*"
我发现当启用2FA时,没有使用aws ecr get登录的选项,一旦我从我的帐户中删除2FA,我就获得了授权令牌。@Y.Eliash 2FA是如何禁用的?我在哪里能找到那扇窗户。AWS是巨大的。对于未来的读者来说——如果你的角色只需要阅读(而不是编写或编辑),那么AmazonEC2ContainerRegistryReadOnly
就足够了。是的,这也为我做到了。已保存日期bro:-Daws get session token可从MFA获取令牌-如果您已安装2FA并在本地.aws/credentials文件中使用自定义aws配置文件,则必须提供要使用的此配置文件的名称。在我的例子中,我有一个名为“MFA”的概要文件,所以我必须在几乎每个命令中添加“--profile MFA”。或者您可以在当前shell中“导出AWS_PROFILE=mfa”。因此,在我的例子中,要使用自定义aws配置文件运行此命令:“aws ecr get login--region eu-central-1--no include email--profile mfa”-将“mfa”更改为配置文件名如果启用了mfa,则设置会话令牌->mfa也可能导致此问题这对我有效。应标记为正确答案