从AWS ECS单独帐户中的私有注册表中提取容器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从AWS ECS单独帐户中的私有注册表中提取容器相关的知识,希望对你有一定的参考价值。

如何获取我的ECS Fargate群集,以从另一个AWS账户中的私有Docker注册表中提取容器?如果私有Docker注册表位于同一帐户中,则不需要身份验证,但会得到CannotPullContainerError: Error response from daemon: pull access denied for <account id>.dkr.ecr.ap-southeast-2.amazonaws.com/project/container, repository does not exist or may require 'docker login'

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html谈论身份验证和私有注册表,但似乎没有提及我在另一个AWS账户中使用ECR的用例。看起来我可以在ECR权限中添加对已定义的AWS账户列表的访问权限,但可能还有其他方法吗?为ECR生成的密码似乎只能使用12个小时,因此无法使用。

答案

在运行Fargate服务的帐户中,任务定义中指定的任务执行角色应具有拉取图像的权限。

{
"Version": "2012-10-17",
"Statement": [
    {
        "Action": [
            "ecr:BatchCheckLayerAvailability",
            "ecr:GetDownloadUrlForLayer",
            "ecr:BatchGetImage"
        ],
        "Resource": "arn:aws:ecr:eu-west-1:<account id>:repository/project",
        "Effect": "Allow"
    },
    {
        "Action": "ecr:GetAuthorizationToken",
        "Resource": "*",
        "Effect": "Allow"
    }

]}

并且在包含ECR的帐户中,您应该在ecr策略中指定允许包含任务执行角色的帐户访问存储库。在下面的ecr策略中,添加了整个帐户,这在安全性方面可能有点高,但是您可以加强一些操作。

{ "Version": "2008-10-17", "Statement": [ { "Sid": "PullImage", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<accountid>:root" }, "Action": [ "ecr:BatchGetImage", "ecr:DescribeImages", "ecr:DescribeRepositories", "ecr:GetDownloadUrlForLayer", "ecr:GetLifecyclePolicy", "ecr:GetLifecyclePolicyPreview", "ecr:GetRepositoryPolicy", "ecr:ListImages" ] } ] }

以上是关于从AWS ECS单独帐户中的私有注册表中提取容器的主要内容,如果未能解决你的问题,请参考以下文章

在ECS上使用来自pulumi的私人码头登记处的图像

AWS ECS 如何在私有桥接网络中启动容器

在单独的 docker 容器 (AWS ECS) 中连接到 MongoDB

AWS ECS 开发工具包。使用开发工具包为 ECS 集群注册新容器实例 (EC2)

[AWS][容器][ECS] 容器动手实验201

无法访问 AWS ECS EC2 实例中的端口