将逗号分隔的角色列表转换为Cloudformation中的Arns列表

时间:2018-06-25 14:03:26

标签: amazon-cloudformation

我有一个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中发生吗?

1 个答案:

答案 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"