如何定义可被其他ECR存储库定义引用的Cloudformation ECR RepositoryPolicyText?

问题描述

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

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

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

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

代替复制RepositoryPolicyText,我可以编写一次并引用其他存储库定义。

解决方法

您可以将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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...