声明式云形成/地形中的动态 ec2 资源

时间:2021-04-20 13:04:45

标签: amazon-ec2 terraform cloud amazon-cloudformation

我们正在将我们的基础设施迁移到云形成中,因为以更好的方式描述基础设施要容易得多。这对于安全组、路由、VPC、中转网关等内容非常有效。

但是,我们有两个问题正在努力解决,我认为这不适合像 terrafrom 和云形成这样的声明式、基础设施即代码范式。

(1) 我们有一个业务需求,我们在一天中的特定时间运行预定的批处理。这些计算量非常大。为了节省成本,我们在当时启动的 EC2 上运行这些,然后在批处理完成时将其拆除。但是,这似乎需要临时更改 terraform/CF 文件,然后再更改回来。有没有更原生的方式来做到这一点?

(2) 我们动态存储并允许客户端对其负载均衡器 (ALB) 上的防火墙规则进行编辑。此信息无法存储在 terraform/CF 文件中,因为客户端可以根据需要对其进行更改。

有没有办法在 CF/Terraform 中正确地做这些事情?

1 个答案:

答案 0 :(得分:1)

(1) 如果您必须使用 EC2,您可以创建一个 Lambda 来启动您的 EC2 实例。然后,创建在您指定的日期/时间触发 Lambda 的 CloudWatch 事件。有关更多详细信息,请参阅 https://aws.amazon.com/premiumsupport/knowledge-center/start-stop-lambda-cloudwatch/。工作完成后,让您的 EC2 使用 awssdk 或 awscli 自行关闭。

或者,您可以使用 AWS Lambda 来运行您的批处理作业。只有在 Lambda 运行时才会向您收费。同样,创建一个 CloudWatch Event 规则来安排 Lambda。

(2) 您可以将防火墙规则存储在您自己的数据库中,并使用 awssdk 修改实际的 ALB SG 规则。我认为将这些东西存储在 Terraform/CF 中不是一个好主意。恕我直言,Terraform/CF 非常适合声明基础设施,但对于动态变化的资源(尤其是像您的客户这样的第三方)来说,它不是一个好的解决方案。