【问题标题】:CloudFormation template file -- how to use ref function in the middle of a string to reference a parameterCloudFormation 模板文件——如何在字符串中间使用 ref 函数来引用参数
【发布时间】:2018-01-31 05:16:44
【问题描述】:

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

我有一个 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?

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    Fn::Join reference

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

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

    【讨论】:

    • 参加聚会有点晚了,但我认为您需要在 Join 函数周围使用 { 和 }。即“资源”:[ {“Fn::Join”: ["", ["arn:aws:s3:::", {"Ref":"BucketName"}] ] } ]
    猜你喜欢
    • 2019-01-18
    • 1970-01-01
    • 2019-12-13
    • 2014-07-25
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 2021-09-26
    • 2019-09-12
    相关资源
    最近更新 更多