【发布时间】:2016-10-29 16:16:30
【问题描述】:
我正在使用 AWS CLI 和 CloudFormation,但在文档中找不到任何参考。
有人知道是否可以从当前配置创建 CloudFormation 模板。
假设我想从我当前的安全组配置中获取 CloudFormation 模板。
知道是否可以使用 CLI 将该配置导出为模板?
【问题讨论】:
标签: amazon-web-services amazon-cloudformation
我正在使用 AWS CLI 和 CloudFormation,但在文档中找不到任何参考。
有人知道是否可以从当前配置创建 CloudFormation 模板。
假设我想从我当前的安全组配置中获取 CloudFormation 模板。
知道是否可以使用 CLI 将该配置导出为模板?
【问题讨论】:
标签: amazon-web-services amazon-cloudformation
在我们的环境中使用上述传统工具时,我遇到了一些问题;我们有一个复杂的 API 网关。前 2 根本没有找到它(虽然对于其他资源来说似乎很理想)
我找到了另一个工具“Terraformer”,它可以将 AWS 提取到 Terraform,然后可以将其转换为 CloudFormation - 或直接用作 IaC。
https://github.com/GoogleCloudPlatform/terraformer#installation
如果上述工具不起作用,也许这对其他人有用。
【讨论】:
根据我们的经验,我们发现了 3 种可能的方法来将现有的手动部署(从 Web 控制台 UI)AWS 基础设施转换为 Cloudformation (CF)。
使用 CloudFormation 原生引入的新功能(自 2019 年 11 月起),允许您Import existing resources into a CloudFormation stack
使用aws cli 对构成堆栈的每个元素执行$aws service_name_here describe,例如RDS 数据库堆栈:
Type: AWS::RDS::DBInstance,Type: AWS::EC2::SecurityGroup,Type: AWS::RDS::DBSubnetGroup 和Type: AWS::RDS::DBParameterGroup
并根据从 aws cli 获得的每个组件的输出手动转换为 CF。这种方法通常需要更多的 AWS 和 CF 经验,但您创建的模板可以根据良好实践进行结构化和设计、完全参数化 (Sub, Ref, Join, Fn::GetAtt:, Fn::ImportValue)、模块化、应用 conditions,并且在第一次迭代中结果可能会接近模板的最终状态(有趣的参考示例:https://github.com/widdix/aws-cf-templates/)。
加分! :)
使用 Terraforming (https://github.com/dtan4/terraforming)。考虑到 Terraform 0.12.0-beta2 的新版本(terraform-provider-aws 2.7.0 已在稳定版本中支持),具有新功能和更友好的语法,并且不忽略它是一个开源工具和与云提供商无关,我不会拒绝基于现有 AWS 基础设施生成 Terraform 代码的可能性,如果可能的话,以模块和子模块的形式作为参考 -> https://registry.terraform.io/ 作为 AWS CF 的替代品。
将您当前部署的 AWS 基础设施导出到 Cloudformation / Terraform 代码的其他一些新替代方案:
【讨论】:
除了 CloudFormer,您可能还想看看 Bellerophon:https://github.com/arminhammer/bellerophon。
【讨论】:
无法使用 AWS CLI,但您可以使用 CloudFormer [1] 工具从现有资源创建 CloudFormation 模板。我已经取得了不错的成功。这些模板不像手工模板那样“漂亮”,但它们提供了一个很好的起点。
【讨论】: