0

如何在字符串中取消引用參數?CloudFormation模板文件 - 如何在字符串中間使用ref函數來引用參數

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

謝謝!

回答

2

您需要使用內在函數將靜態值與Ref值連接起來。

Fn::Join reference

在你的情況,這將導致下面的結構。

"Resource": [ 
    "Fn::Join": ["", ["arn:aws:s3:::", {"Ref":"BucketName"}] ] 
] 
相關問題