是否可以在不使用 docker 登录的情况下从 EC2 中的 ECR 提取映像?

Ton*_*han 4 amazon-ec2 amazon-web-services amazon-iam docker amazon-ecr

我现在拥有一个私有 ECR 存储库和一个 EC2 实例。如果我想从本地计算机中的私有 ECR 中提取映像,我必须使用 aws configure 设置我的 AWS 凭证并执行 docker 登录。

现在,我想从 EC2 实例中提取映像。当我尝试直接运行 docker 命令时,它告诉我首先进行身份验证。是否可以将 IAM 角色附加到我的 EC2 实例并跳过 docker 登录或 aws ecr 登录工作流程?

目前,我只能在 EC2 实例内运行 aws configure,并且似乎需要一个额外的 IAM 用户,我试图避免这种情况。

Mar*_*k B 8

除了此处发布的其他答案指出您应该使用 EC2 IAM 角色而不是使用 来配置角色之外aws configure,我还建议在您的 EC2 实例上安装Amazon ECR Credential Helper。那么你就不必执行docker login.


Erv*_*gyi 6

您不必aws configure在 EC2 机器上运行,事实上这将是一种糟糕的安全实践。您应该附加一个 AWS 角色,该角色允许 EC2 实例获取映像,更重要的是,能够获取 ECR 注册表的授权令牌。例如,您可以创建具有以下权限的策略,以对 ECR 映像进行只读访问:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "ecr:DescribeImages",
                "ecr:GetAuthorizationToken",
                "ecr:ListImages"
            ],
            "Resource": "*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

使用此策略创建新的 IAM 服务角色并将其附加到 EC2 实例。

现在,即使您附加了此角色,您也必须使用授权令牌对Docker CLI 进行身份验证。