gpt4 book ai didi

amazon-web-services - 如何检查 CloudFormation 脚本中是否已存在特定资源

转载 作者:行者123 更新时间:2023-12-03 09:11:30 25 4
gpt4 key购买 nike

我正在使用 cloudformation 创建一个堆栈,其中包含自动缩放的 ec2 实例和 S3 存储桶。对于 S3 存储桶,我将 DeletionPolicy 设置为 Retain,这工作正常,直到我想再次重新运行我的 cloudformation 脚本。由于在之前的运行中,脚本创建了 S3 存储桶,因此在后续运行中失败,并表示我的 S3 存储桶已存在。当然,其他资源也不会被创建。我的问题是如何检查我的 S3 存储桶是否首先存在于 cloudformation 脚本中,如果存在,则跳过创建该资源。我查看了AWS中的条件,但似乎都是基于参数的,我还没有找到从现有资源检查的函数。

最佳答案

没有明显的方法可以做到这一点,除非您通过显式检查动态创建模板。同一个模板创建的Stack是独立的实体,如果创建一个包含Bucket的Stack,删除该Stack并保留该Bucket,然后再创建一个新的Stack(即使是同名的Stack),这之间没有任何联系新堆栈和作为前一个堆栈的一部分创建的存储桶。

如果您想对多个堆栈使用同一个 S3 存储桶(即使一次只存在其中一个),则该存储桶并不真正属于堆栈 - 在单独的堆栈中创建存储桶会更有意义堆栈,使用单独的模板(将存储桶 URL 放入“输出”部分),然后使用参数从原始堆栈引用它。

2019 年 11 月更新:

现在有一个可能的替代方案。 11 月 13 日 AWS launched CloudFormation 资源导入。借助该功能,您现在可以从现有资源创建堆栈。目前此功能支持的资源类型并不多,但 S3 存储桶是支持的。

在您的情况下,您必须分两步完成:

  1. 使用“创建堆栈”>“使用现有资源(导入资源)”创建包含预先存在的 S3 存储桶的模板(这是 --change-set-type CLI 中的 IMPORT 标志)( see docs )
  2. 更新模板以包含所有尚不存在的资源。

正如他们在文档中指出的那样;这个功能非常通用。所以它开辟了很多可能性。请参阅docs了解更多信息。

关于amazon-web-services - 如何检查 CloudFormation 脚本中是否已存在特定资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28102169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com