首页 文章

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

提问于
浏览
5

在AWS CloudFormation中,您可以通过上载模板文件或指定模板的S3 URL来指定模板 . (指定Amazon S3模板URL)

如果存储桶是公共存储的,则可以为任何人构建URL以访问对象/模板 . 只要S3模板URL是一个简单的URL,这样就可以正常工作:

https://s3.amazonaws.com/public-bucket/unsigned.template

但如果存储桶是私有的,则可以生成已签名的S3 URL(如果要将对象共享给其他人) . 我获得了一个URL,它是私有存储桶中模板的已签名S3 URL:

https://s3.amazonaws.com/private-bucket/signed.template?Signature=Cs6sqUABadcfZAuFu5FSMWAQ%3D&Expires=1459636414&AWSAccessKeyId=AKIAJ23456AXIOUBCNQ

不幸的是,CF并没有遵守签名的URL并在 .template 之后删除所有内容 . 由于这个原因,我得到 Access Denied 错误 . 有没有人知道在CloudFormation中将已签名的S3 URL指定为模板的方法?

2 回答

  • 4

    AWS最终承认它是CloudFormation中的一个错误,他们正在努力修复 . 那还没有ETA .

  • 0

    您似乎只能使用您有权访问的URL(已签名的URL足够注意) . 但是如果你愿意使用aws cli,你也可以使用curl来获取模板的内容并使用 --template-body 创建堆栈

    $ aws cloudformation create-stack --template-body "$(curl -s '<signed url>')" --stack-name test --parameters ParameterKey=string,ParameterValue=string
    

    如果您是脚本,请将模板保存到临时文件,然后将其传递给template-body

相关问题