gpt4 book ai didi

amazon-web-services - 以编程方式利用通过 CloudFormation 创建的资源

转载 作者:行者123 更新时间:2023-12-03 07:14:56 25 4
gpt4 key购买 nike

我正在使用 AWS CloudFormation 创建一堆应用程序资源,创建资源时,CloudFormation 会在名称末尾添加一个哈希值以使其唯一。

即如果您想创建名为 MyStream 的 Kinesis 流,则实际名称类似于 my-stack-MyStream-1F8ISNCLP0W4O

我希望能够以编程方式访问资源,而无需知道哈希值,无需向 AWS 查询我的资源以匹配自己的名称,也无需手动步骤。有人知道在应用程序中以编程方式、可预测地使用 AWS 资源的便捷方法吗?

以下是我能想到的不太理想的选择:

  1. 在资源上设置标签(即 name -> MyStream)并查询 AWS 以获取实际的资源名称。
  2. 向 AWS 查询资源名称列表,并查找与预期名称的部分匹配。
  3. 创建资源后,手动将实际名称复制到配置文件中(可能是这些选项中最明智的选项)

最佳答案

您可以使用 CloudFormation API 获取堆栈中的资源列表。这将为您提供逻辑 ID 列表(即 CloudFormation 模板中不带哈希值的名称)和匹配的物理 ID(带有堆栈名称和哈希值)。使用 AWS CLI,这将显示两个 id 之间的映射:

aws cloudformation describe-stack-resources
--query StackResources[].[LogicalResourceId,PhysicalResourceId]
--stack-name <my-stack>

Amazon 提供的所有各种语言 SDK 中都提供了执行相同查询的 CloudFormation API。

您可以使用它作为#1(在运行时查询 CloudFormation)的替代方案,或#3(在构建时查询 CloudFormation 并将结果嵌入到配置文件中)的替代方案。我不认为使用自己的标签比简单地查询 CF API 有任何优势。如果您希望同一模板中的两个或多个堆栈共存,#2 会导致问题。

我使用了运行时和构建时方法。构建时方法可让您消除对 CloudFormation 的依赖或对 CloudFormation 的了解,但需要在配置文件中添加堆栈特定信息。我喜欢运行时方法,允许将相同的构建部署到多个堆栈,它只需要堆栈名称即可查找所有相关资源。

关于amazon-web-services - 以编程方式利用通过 CloudFormation 创建的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37032215/

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