[英]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.