【问题标题】:How to define a Cloudformation ECR RepositoryPolicyText that can be referenced by other ECR repository definitions?如何定义可由其他 ECR 存储库定义引用的 Cloudformation ECR RepositoryPolicyText?
【发布时间】:2020-09-13 06:27:48
【问题描述】:

我试图创建一个 RepositoryPolicyText,它可以被 cloudformation 模板中定义的其他 ecr 存储库引用。像这样的:

MyRepository: 
  Type: AWS::ECR::Repository
  Properties: 
    RepositoryName: "test-repository"
    RepositoryPolicyText: !Ref MyRepositoryPolicy

我尝试放入托管策略,但不允许在其中创建委托人。

还有其他方法可以让 RepositoryPolicyText 通过引用工作吗?

我可以编写一次并在其他存储库定义中引用,而不是复制 RepositoryPolicyText。

【问题讨论】:

    标签: amazon-cloudformation amazon-ecr


    【解决方案1】:

    您可以使用带有默认字符串的CloudFormation parameter,然后可以跨资源共享此参数。

    Parameters:
      repoPolicy:
        Type: String
        Default: '{"Statement":[ {"Sid" : "a", "Effect" : "Allow", "Principal" : "*", "Action" : "ecr:*" } ]}'
    Resources:
      repoA:
        Type: 'AWS::ECR::Repository'
        Properties:
          RepositoryName: cfnrepoa
          RepositoryPolicyText: !Ref repoPolicy
      repoB:
        Type: 'AWS::ECR::Repository'
        Properties:
          RepositoryName: cfnrepob
          RepositoryPolicyText: !Ref repoPolicy
    

    【讨论】:

    • 抱歉,但我看不出它是如何工作的,因为参数部分中没有 ECR 类型。也许是字符串?你认为它会如何运作?你有什么例子可以举例吗?谢谢!
    • @Kenji 在答案中添加了一个示例
    • 现在我明白了!谢谢!顺便说一句,我做了一个解决方法,使策略文本保持不变,但使用 Ansible 和循环创建 cloudformation,因此,现在我可以遍历 ECR 存储库的名称并使用相同的 CF 模板创建它们。
    猜你喜欢
    • 2019-07-06
    • 2021-10-16
    • 2018-01-19
    • 2018-08-22
    • 2016-04-03
    • 1970-01-01
    • 2018-11-11
    • 2021-06-10
    • 2018-11-15
    相关资源
    最近更新 更多