4

在 Cloudformation 中,嵌套模板必须向 S3 对象提供 https:// URL。似乎不支持 s3:// URL。

堆栈模板参数

除了使用预签名 URL 之外,嵌套堆栈是否可以使用没有公共读取 ACL 的 S3 对象?

请注意,从这个相关问题中也可以看出,预签名的 URL 有时也不是一个可行的选项,但该问题已得到解决。但是,预签名 URL 的最长 1 周到期仍然令人反感,因为可能需要重新生成嵌套堆栈的 URL 以供将来更新。

如何在 CloudFormation 中将签名的 S3 URL 指定为模板?

4

1 回答 1

3

简短的回答是必须指定允许“匿名”Web 请求获取定义嵌套堆栈的模板的策略或 ACL。

但是,我想出了一个可以阻止真正“公共”访问的小技巧。似乎 CloudFormation 从 10.0.0.0/8 内的某个 IP 地址发出其 HTTP GET。(至少在我的情况下,我认为是 YMMV,因为 AWS 实际上并没有在我找到的任何地方保证这一点。)

因此,您可以在策略中添加一个条件,限制对该私有范围的访问,从而有效地阻止整个 Internet 读取您的模板。

合适的存储桶策略如下所示:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::your-cloudformation-bucket-name/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "10.0.0.0/8"
                }
            }
        }
    ]
}
于 2018-07-11T23:47:12.867 回答