从jenkins docker ecs容器中访问ecr图像

问题描述 投票:0回答:1

你好Jenkins / Docker专家 -

Stuff that is working:

使用here建议的方法,我能够在AWS ECS集群中运行Jenkins docker镜像。使用-v卷安装到docker socket(/var/run/docker.sock)和docker(/usr/bin/docker)我也可以从Jenkins容器内部访问docker进程。

Stuff that isn't:

我面临的最后一个问题是将图像拉入/拉出AWS ECR Registry。当我尝试执行docker pull / push命令时,我最终会使用 - no basic auth credentials

我偶然发现了这个link explaining my problem。但是,我无法使用此处建议的解决方案,因为主机中没有~/.docker/config.json与Jenkins docker容器共享。

有什么建议?

docker jenkins amazon-ecs amazon-ecr
1个回答
1
投票

Amazon ECR用户需要具有以下权限才能调用ecr:GetAuthorizationToken,然后才能对注册表进行身份验证,并从任何Amazon ECR存储库中推送或提取任何图像。 Amazon ECR提供多种托管策略来控制不同级别的用户访问;有关更多信息,请参阅ecr_managed_policies

AmazonEC2ContainerRegistryPowerUser

此托管策略允许高级用户访问Amazon ECR,该ECR允许对存储库进行读写访问,但不允许用户删除存储库或更改应用于它们的策略文档。

{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "ecr:GetAuthorizationToken",
            "ecr:BatchCheckLayerAvailability",
            "ecr:GetDownloadUrlForLayer",
            "ecr:GetRepositoryPolicy",
            "ecr:DescribeRepositories",
            "ecr:ListImages",
            "ecr:DescribeImages",
            "ecr:BatchGetImage",
            "ecr:InitiateLayerUpload",
            "ecr:UploadLayerPart",
            "ecr:CompleteLayerUpload",
            "ecr:PutImage"
        ],
        "Resource": "*"
    }]
}

因此,不要使用〜/ .docker / config.json,而是将上述策略角色分配给您的ECS任务,您的docker容器服务将能够从ECR推送拉图像。

IAM任务角色

使用Amazon ECS任务的IAM角色,您可以指定可由任务中的容器使用的IAM角色。应用程序必须使用AWS凭据签署其AWS API请求,此功能提供了管理应用程序使用的凭据的策略,类似于Amazon EC2实例配置文件为EC2实例提供凭据的方式。您可以将IAM角色与ECS任务定义或RunTask API操作相关联,而不是将AWS凭证创建和分发到容器或使用EC2实例的角色。然后,任务容器中的应用程序可以使用AWS SDK或CLI向授权的AWS服务发出API请求。

将IAM角色用于任务的好处

凭据隔离:容器只能检索在其所属的任务定义中定义的IAM角色的凭据;容器永远不能访问用于属于另一个任务的另一个容器的凭据。

授权:未经授权的容器无法访问为其他任务定义的IAM角色凭据。

可审计性:通过CloudTrail可以访问和事件记录,以确保追溯审计。任务凭证具有附加到会话的taskArn上下文,因此CloudTrail日志显示哪个任务正在使用哪个角色。

但是你必须像上面提到的那样运行这个命令才能获得Auth令牌。

eval $(aws ecr get-login --no-include-email)

你会得到回应

登录成功

现在,一旦从ECR获取auth令牌,就会推送拉图像。

docker push xxxxxxxxxxx.dkr.ecr.us-west-2.amazonaws.com/nodejs:test

Automate ECR login

© www.soinside.com 2019 - 2024. All rights reserved.