问题描述
我试图创建一个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