AWS ECR CF模板失败,并提供了“无效的存储库策略”#39;

时间:2017-09-01 13:33:36

标签: amazon-web-services amazon-cloudformation

此CF模板失败:

B - - - > A

堆栈创建会产生此错误:

' PolicyText'中的参数无效未能满足约束条件:'提供的存储库策略无效'

问题可能是什么?

4 个答案:

答案 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模式,我们不得不删除堆栈并重新创建它。