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



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

我有一个 JSON Cloudformation 模板文件,该文件采用 S3 存储桶名称("存储桶名称"(的参数,以在向该存储桶授予权限的 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?

谢谢!

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

Fn::连接引用

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

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

我试图评论@jens答案,以显示它是如何以 YAML 格式完成的,但它不可读,所以我在这里写它作为答案:

Resource: !Join
- ''
- - 'arn:aws:s3:::'
- !Ref ReceivingFiles1
- /*

最新更新