我有一个cloudformation模板,该模板生成带有策略文档的kms密钥,以授予角色对该密钥的访问权限。现在,我希望角色成为Cloudformation模板的CommaDelimitedList参数,并且我不知道高级的大小。所以我有这样的输入:
["role1", "role2", ...]
并且必须生成此:
Principal:
AWS:
- !Sub "arn:aws:iam::${AWS::AccountId}:role/role1",
- !Sub "arn:aws:iam::${AWS::AccountId}:role/role2",
...
这种转变可能在cloudformation中发生吗?
答案 0 :(得分:1)
不可能。
您需要做的是通过ARNs列表。例如:
SomeParam:
"Fn::Join":
- ","
-
- !GetAtt "role1.Arn"
- !GetAtt "role2.Arn"
直接使用它,当CommaDelimitedList作为参数传递时,它会被CloudFormation自动转换为列表:
Principal:
AWS: !Ref "RolesParameter"
如果只有角色名称,则需要像在问题中一样,但是在作为参数传递之前,自行构建ARN:
SomeParam:
"Fn::Join":
- ","
-
- !Sub "arn:aws:iam::${AWS::AccountId}:role/role1"
- !Sub "arn:aws:iam::${AWS::AccountId}:role/role2"