问题描述
我想从参数部分传递多个存储桶名称,并授予它们对资源中这些存储桶的只读访问权限。我能够在限制计数时实现,但在未定义计数时如何实现。
"Parameters": {
"S3Bucket": {
"Type": "CommaDelimitedList","Description": "Select Bucket Names to Associate with the policy"
},"Resource": [{"Fn::Join": ["",["arn:aws:s3:::","Fn::Select": ["0",{
"Ref": "S3Bucket"
}]]
}
解决方法
您无法动态传递值,因为云形成模板没有循环的概念。
如果您想使用CommaDelimitedList并传递例如您必须从参数中获取5个值,才能在模板中获取相同的值计数。
Fn :: Select不会检查空值或索引是否超出数组范围。这两种情况都将导致堆栈错误,因此应确保所选索引是有效的,并且列表包含非空值。