此CF模板失败:
B - - - > A
堆栈创建会产生此错误:
' PolicyText'中的参数无效未能满足约束条件:'提供的存储库策略无效'
问题可能是什么?
答案 0 :(得分:4)
阅读ECR Repository Policy周围的文档,结果证明它仅限于Principal列表的用户和root帐户。因此,您可能需要换出列出您想要访问的所有用户。
Amazon documentation has some samples有一些关于你可以用它做什么的例子。
答案 1 :(得分:0)
为了防止木偶链接的公爵中断,这是一个示例。我今天在使用自动创建的json时遇到了麻烦。这似乎可以解决它。
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPushPull",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<<id number of root user here>>:user/<<some iam user>>"
},
"Action": [
"ecr:BatchCheckLayerAvailability",
"ecr:BatchGetImage",
"ecr:CompleteLayerUpload",
"ecr:GetDownloadUrlForLayer",
"ecr:InitiateLayerUpload",
"ecr:PutImage",
"ecr:UploadLayerPart"
]
}
]
}
答案 2 :(得分:0)
一种合适的解决方案可能是使用RoleArn
而不是组(无效)和/或IAM用户
ECR:
Type: AWS::ECR::Repository
Properties:
RepositoryPolicyText:
Version: "2012-10-17"
Statement:
-
Sid: AllowPushPull
Effect: Allow
Principal:
AWS:
- !Sub arn:aws:iam::${AWS::AccountId}:role/${MyPreparedRole}
Action:
- "ecr:GetDownloadUrlForLayer"
- "ecr:..."
可以在一个组中提供“ MyPreparedRole”角色。
答案 3 :(得分:0)
我们今天遇到了同样的问题,结果发现策略文本中提供的IAM用户名是错误的。因此,堆栈进入了不可恢复的delete_failed模式,我们不得不删除堆栈并重新创建它。