尝试从私有 ECR 中提取映像时出现“无基本身份验证凭据”

2 amazon-web-services docker dockerfile aws-ecr

我在 Dockerfile 中间的某处有以下行,用于从我的私有 ECR 中检索图像。

FROM **********.dkr.ecr.ap-southeast-1.amazonaws.com/prod/*************:ff03401
Run Code Online (Sandbox Code Playgroud)

这是我在尝试构建此代码时在 AWS Codebuild 中遇到的错误:

步骤 21/36:从 **********.dkr.ecr.ap-southeast-1.amazonaws.com/prod/*************:ff03401 获取 https ://************.dkr.ecr.ap-southeast-1.amazonaws.com/prod/*************/manifests/ff03401:没有基本授权凭证

如何以最安全的方式提供这些凭据,并且还可以terraform编辑?

mch*_*wre 8

有多种方法可以做到。

使用 aws 访问和密钥。在其中您在 ec2 机器上设置 aws 凭据并运行 ecr login 命令。aws ecr get-login --no-include-email --registry-ids <some-id> --region eu-west-1然后 docker pull 应该可以工作。但这不是推荐的安全方式。

我更喜欢使用 aws iam roles

假设您想在使用 terraform 启动的 ec2 机器上提取此图像。利用 iam 角色。

  • 手动或使用 terraform iam resource创建 iam 角色。
  • 有关 iam 政策的内容,请参阅
  • 在使用terraform带来EC2实例资源化妆用的iam_instance_profile属性,这个属性的值应该是您创建IAM角色的名称。

这应该足以以安全的方式从 ECR 自动拉取 docker 镜像。

希望这可以帮助。