使用 Terraform 来配置 ECS、Elastic、SQS、Lambda



我对Terraform相当陌生,有几个问题 - - 我想预置具有运行 EC2 启动类型的容器的 ECS 集群。我可以用Terraform做到这一点。 - 我还需要一个 SQS,Lambda 与 SQS 通信,并将数据提供给弹性集群,然后弹性集群将与其他微服务接口。

我的问题是,我应该如何配置这个? 是否可以使用 Terraform 在单个 ECS 集群中执行上述所有操作? 让 ECS 集群分开并将 SQS、Lambda、弹性集群作为独立的组件会更好吗?并且是否将最终的微服务作为单独的 EC2 容器(非 ECS(运行?

处理此基础结构的更好方法是什么?

这是一个非常开放的问题,所以我可以根据经验提供一些指导,但请用你最好的判断将我的经验应用到你的个人用例中。

总的来说,我发现试图将不相关的东西放在同一个 Terraform 模块中(我想这就是你说"组件"的意思(是自找麻烦。ECS 集群中有很多东西属于一起 - IAM 角色和策略、自动扩展组、集群本身......例如,请参阅此模块。但是SQS,Lambda和Elastic感觉它们并不相关。我会把它们分开。与非 ECS 微服务相同。

我想强调的另一件事是,Terraform不是一个部署工具,不应该被用来做到这一点。Terraform在定义不经常和独立变化的事物时大放异彩。后者非常重要,因为 Terraform 不是事务性的,如果出现问题,不会回滚任何东西。如果您在 AWS 世界中需要更多的动态和更强大的完整性保证,我建议您使用 Terraform 来定义 CloudFormation 堆栈并通过后者运行部署。

最新更新