繁体   English   中英

在 AWS ECS 的单独账户中从私有注册表中拉取容器

[英]pull container from private registry in separate account in 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" ] } ] }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM