我想从参数部分传递多个存储桶名称,并允许它们一次进入iam resouce部分-云的形成

问题描述

我有一个用例,

我想从参数部分传递多个存储桶名称,并授予它们对资源中这些存储桶的只读访问权限。我能够在限制计数时实现,但在未定义计数时如何实现。

"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不会检查空值或索引是否超出数组范围。这两种情况都将导致堆栈错误,因此应确保所选索引是有效的,并且列表包含非空值。

来源-https://docs.amazonaws.cn/en_us/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-select.html