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

I want to pass multiple bucket names from parameter section and allow them in iam resouce section in one go - cloud formation

我有一个用例。

我想从参数部分传递多个存储桶名称,并授予它们对 resources.i 中的那些存储桶的只读访问权限我可以在计数受限时实现但如何在计数未定义时实现。

"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