如何取消引用字符串中间的参数?
我有一个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?
谢谢!
答案 0 :(得分:4)
您需要使用内部函数将静态值与Ref
值连接起来。
在您的情况下,这将导致以下构造。
"Resource": [
"Fn::Join": ["", ["arn:aws:s3:::", {"Ref":"BucketName"}] ]
]