AWS GetAuthorizationToken与根用户错误



我正在尝试将docker映像推送到AWS ECR。我正在使用我的root用户(我知道这是不推荐的)。

我在本地机器上创建了一个访问密钥/秘密。然后我用这个命令来推送它(从ECR复制):

sudo aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin xxxxxx.xxxxxx.ecr.us-east-1.amazonaws.com

但是我一直得到这个错误!

An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:sts::5555555555555:assumed-role/AmazonEC2RunCommandRoleForManagedInstances/mi-08d61ab572732fec4 is not authorized to perform: ecr:GetAuthorizationToken on resource: * because no identity-based policy allows the ecr:GetAuthorizationToken action

我看到过类似的帖子,说这是因为2FA。我关闭了它,但没有任何变化。

错误提示:名称为AmazonEC2RunCommandRoleForManagedInstances的AWS角色没有ecr:GetAuthorizationToken权限。您的用户权限不起作用—您提到禁用2fa,您可以再次启用它—您所在的机器通过IAM角色自动向AWS cli提供AWS凭据。您有多个选项:

  1. 附加一个内联或客户管理的IAM策略,授予AmazonEC2RunCommandRoleForManagedInstances角色显式ecr:GetAuthorizationToken权限;你必须自己创建这个策略
  2. 附加一个AWS管理的策略,即AmazonEC2ContainerRegistryPowerUser将工作。注意:使用AmazonEC2ContainerRegistryPowerUserIAM角色的所有其他机器将获得相同的权限。您可以通过为mi-08d61ab572732fec4创建自定义角色并授予该新角色新权限来缓解此问题
  3. 如果您想使用自己的凭据,那么在您的机器的shell中设置AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY环境变量,参见以下说明

这三个选项中的一个应该可以,因为它们涉及的管理工作很少,尽管还有其他选项。

我的问题是由于SUDO命令。我刚刚更改了docker文件的权限,如:

sudo chmod 666 /var/run/docker.sock

一切都开始工作了。

相关内容

  • 没有找到相关文章

最新更新