【问题标题】:To launch EC2 instances based on available AMIs via CloudFormation template通过 CloudFormation 模板基于可用 AMI 启动 EC2 实例
【发布时间】:2018-10-06 18:43:04
【问题描述】:

我需要根据我们账户在同一地区拥有的 AMI 数量,在东京地区启动多个 EC2 实例。 AMI 每天都从另一个区域备份。

这个 CloudFormation 需要实现的是:

  • 检索今天创建的 AMI 列表
  • 尝试在同一区域中启动它们中的每一个

例如,如果今天在东京地区创建了 10 个不同的 AMI,那么 CloudFormation 将基于这 10 个 AMI 创建 10 个 EC2 实例。

我查看了Walkthrough: Looking Up Amazon Machine Image IDs - AWS CloudFormation 的一些示例,但发现代码不符合要求。

我已经有 Lambda 函数 retrieve-today-ami.py,挑战是将它们包含在 Walkthrough: Looking Up Amazon Machine Image IDs - AWS CloudFormation 中的 CF 模板中

【问题讨论】:

  • 您的实际高级目标是什么?是创建一个高可用性/冗余的基础架构吗?原始区域中的实例是如何创建的?您能否重复使用该方法,而不仅仅是复制 AMI? AMI 上有什么——数据应该存储在数据库中,那么如何复制数据?在弄清楚如何简单地启动 EC2 实例之前,请考虑一下高级目标。

标签: amazon-ec2 aws-lambda amazon-cloudformation


【解决方案1】:

通常,CloudFormation 用于启动预定义的基础架构。您需要启动可变数量的实例,每个实例的信息每天都在变化,与使用 CloudFormation 的模型不匹配。

根据您的用例,我建议编写脚本来执行您想要的操作。

例如,列出 AMI 的 Python 脚本,识别您要使用的那些,然后使用这些 AMI 启动 EC2 实例。

【讨论】:

    【解决方案2】:

    您可以通过使用 Lambda 支持的自定义资源来获取 AMI 的名称来实现此目的。然后,您的自定义资源的输出可以在模板中的 EC2 节中使用。您可以让定义 Lambda 的一个模板导出值并将它们导入您的 EC2 模板。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 2018-03-17
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 2019-06-26
      相关资源
      最近更新 更多