将 Terraform 模板转换为 Cloudformation 模板

Posted

技术标签:

【中文标题】将 Terraform 模板转换为 Cloudformation 模板【英文标题】:Convert Terraform Templates to Cloudformation Templates 【发布时间】:2018-04-14 09:15:31 【问题描述】:

我想将现有的 terraform 模板 (hcl) 转换为 aws cloudformation 模板 (json/yaml)。

我基本上是想通过CFN_NAG来查找这些模板的安全问题。

我已经尝试过的一种方法是将 HCL 转换为 JSON,然后将模板传递给 CFN_NAG,但由于两个模板的结构不同,我收到了失败。

有人可以在这里提供任何建议吗?

【问题讨论】:

您应该在此处提供一个示例来帮助说明您遇到的问题。 【参考方案1】:

实现这一点的一种相当复杂的方法是使用 Terraform 建立实际的 AWS 环境,然后使用 AWS 的 CloudFormer 从 Terraform 构建的内容中提取 CloudFormation 模板(JSON 或 YAML)。此时您可以使用cfn-nag。

CloudFormer 有一些限制,目前并非所有 AWS 资源都受支持(例如 RDS 安全组),但它会为您提供所有基本 AWS 资源。

不要忘记删除所有环境,包括 CloudFormer 的环境,以最大限度地降低成本。

【讨论】:

【参考方案2】:

您想使用静态代码分析来查找 Terraform 设置中的安全问题。

尝试将 Terraform 转换为 CloudFormation 以便以后使用 cfn-nag 是一种方法。但是,现在有一些工具可以直接对 Terraform 设置进行操作。

我建议看看terrascan。它基于terraform_validate。

【讨论】:

【参考方案3】:

https://github.com/bridgecrewio/checkov/ 对 terraform 和 cloudformation 运行安全扫描

【讨论】:

以上是关于将 Terraform 模板转换为 Cloudformation 模板的主要内容,如果未能解决你的问题,请参考以下文章

Terraform适用于现有的ARM资源。需要国家吗?

Terraform 0.12 使用模板创建入口规则

Terraform - 如何将列表转换为地图(如何使用 terraform 获取 AMI 标签)

无法使用“terraform init -reconfigure”将 S3 后端中的 Terraform 远程状态转换为本地状态

将 terraform HCL 变量 type=map(any) 转换为 JSON

Terraform - 创建 EBS 的快照,然后将快照转换为 EBS 并附加到 EC2