CloudFormation模板文件 - 如何在字符串中间使用ref函数来引用参数

时间:2017-08-22 19:41:59

标签: json amazon-web-services amazon-s3 formatting amazon-cloudformation

如何取消引用字符串中间的参数?

我有一个JSON Cloudformation模板文件,它接受S3存储桶名称(“BucketName”)的参数,以便在IAM策略中使用,该策略为该存储桶提供权限 - 以下策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:GetObject",
                "s3:ListObject"
            ],
            "Resource": [
                "arn:aws:s3:::${Ref:BucketName}/*"
            ],
            "Effect": "Allow"
        }
    ]
}

"arn:aws:s3:::${Ref:BucketName}/"不起作用;

"arn:aws:s3:::", {"Ref": "BucketName"}, "/"也不起作用,因为它将其作为字符串列表而不是单个字符串读取。

我知道我可以将整个arn作为参数而不仅仅是存储桶名称,但是我如何才能在字符串中引用BucketName?

谢谢!

1 个答案:

答案 0 :(得分:4)

您需要使用内部函数将静态值与Ref值连接起来。

Fn::Join reference

在您的情况下,这将导致以下构造。

"Resource": [
   "Fn::Join": ["", ["arn:aws:s3:::", {"Ref":"BucketName"}] ]
]