【问题标题】:Export AWS configuration as CloudFormation template将 AWS 配置导出为 CloudFormation 模板
【发布时间】:2016-10-29 16:16:30
【问题描述】:

我正在使用 AWS CLI 和 CloudFormation,但在文档中找不到任何参考。

有人知道是否可以从当前配置创建 CloudFormation 模板。

假设我想从我当前的安全组配置中获取 CloudFormation 模板。

知道是否可以使用 CLI 将该配置导出为模板?

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation


    【解决方案1】:

    在我们的环境中使用上述传统工具时,我遇到了一些问题;我们有一个复杂的 API 网关。前 2 根本没有找到它(虽然对于其他资源来说似乎很理想)

    我找到了另一个工具“Terraformer”,它可以将 AWS 提取到 Terraform,然后可以将其转换为 CloudFormation - 或直接用作 IaC。

    https://github.com/GoogleCloudPlatform/terraformer#installation

    如果上述工具不起作用,也许这对其他人有用。

    【讨论】:

      【解决方案2】:

      根据我们的经验,我们发现了 3 种可能的方法来将现有的手动部署(从 Web 控制台 UI)AWS 基础设施转换为 Cloudformation (CF)。

      1. 使用 CloudFormation 原生引入的新功能(自 2019 年 11 月起),允许您Import existing resources into a CloudFormation stack

      2. 使用aws cli 对构成堆栈的每个元素执行$aws service_name_here describe,例如RDS 数据库堆栈

      • RDS 实例 -> Type: AWS::RDS::DBInstance,
      • RDS (EC2) SG -> Type: AWS::EC2::SecurityGroup,
      • RDS 子网组 -> Type: AWS::RDS::DBSubnetGroup
      • RDS 数据库参数组 -> Type: AWS::RDS::DBParameterGroup

      并根据从 aws cli 获得的每个组件的输出手动转换为 CF。这种方法通常需要更多的 AWS 和 CF 经验,但您创建的模板可以根据良好实践进行结构化和设计、完全参数化 (Sub, Ref, Join, Fn::GetAtt:, Fn::ImportValue)、模块化、应用 conditions,并且在第一次迭代中结果可能会接近模板的最终状态(有趣的参考示例:https://github.com/widdix/aws-cf-templates/)。

      1. 使用 AWS CloudFormer

      加分! :)

      1. 使用 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 的替代品。

      2. 将您当前部署的 AWS 基础设施导出到 Cloudformation / Terraform 代码的其他一些新替代方案:


      相关文章:https://medium.com/@exequiel.barrirero/aws-export-configuration-as-code-cloudformation-terraform-b1bca8949bca

      【讨论】:

      【解决方案3】:

      除了 CloudFormer,您可能还想看看 Bellerophon:https://github.com/arminhammer/bellerophon

      【讨论】:

      • 请注意,这个 Bellerophon 不支持很多资源,例如整个 Elastic Beanstalk 套件。
      【解决方案4】:

      无法使用 AWS CLI,但您可以使用 CloudFormer [1] 工具从现有资源创建 CloudFormation 模板。我已经取得了不错的成功。这些模板不像手工模板那样“漂亮”,但它们提供了一个很好的起点。

      [1]http://aws.amazon.com/developertools/6460180344805680

      【讨论】:

      • 我尝试使用它,但总是在完成后开始在 cloudformation 中运行新堆栈,而不是让我下载模板,这是我需要的,我在这里做错了吗?跨度>
      • 它应该为您提供将模板保存到 S3 存储桶的选项。 (参见docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/… 的底部)或者,您可以将模板复制/粘贴到计算机上的文件中。
      • 链接失效,在您之前粘贴的页面底部,给我一个选项来指定 Amazon S3 模板 URL,但不要下载。就像我说的,在我完成所有步骤后,开始在 cloudformation 中运行堆栈。我想我使用的工具和你说的一样
      • 上一个链接中包含一个尾随句点:docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…
      • 对于现在阅读本文的任何人,CloudFormer 不再维护:stackoverflow.com/a/62944334/5402565
      猜你喜欢
      • 1970-01-01
      • 2017-10-30
      • 1970-01-01
      • 2019-11-09
      • 1970-01-01
      • 2018-11-27
      • 2017-12-23
      • 2017-06-04
      • 2020-12-15
      相关资源
      最近更新 更多