

# 使用 IaC 生成器为现有资源生成模板
<a name="generate-IaC"></a>

借助 CloudFormation 基础设施即代码生成器（IaC 生成器），您可以使用账户中已预置但尚未由 CloudFormation 管理的 AWS 资源生成模板。

IaC 生成器的优点如下：
+ 将整个应用程序置于 CloudFormation 管理之下，或者将其迁移到 AWS CDK 应用程序中。
+ 生成模板时无需逐个描述资源属性，然后将其转换为 JSON 或 YAML 语法。
+ 使用该模板在新账户或区域中复制资源。

IaC 生成过程包括以下步骤：

1. **扫描资源** – 第一步是启动资源扫描。该扫描为全区域扫描，持续 30 天。在此期间，您可以根据同一扫描创建多个模板。

1. **创建模板** – 您可以通过两个选项来创建模板：
   + 从头开始创建新模板并将扫描的资源和相关资源添加到模板中。
   + 以现有的 CloudFormation 堆栈作为起点，并将扫描的资源和相关资源添加到其模板中。

1. **导入资源** – 使用您的模板，将资源作为 CloudFormation 堆栈导入或将其迁移到 AWS CDK 应用程序中。

IaC 生成器功能适用于所有商业区域，并支持许多常见的 AWS 资源类型。有关受支持资源的完整列表，请参阅[资源类型支持](resource-import-supported-resources.md)。

**Topics**
+ [注意事项](#iac-generator-considerations)
+ [扫描资源所需的 IAM 权限](#iac-generator-permissions)
+ [用于模板生成、管理和删除的常用命令](#iac-generator-commonly-used-commands)
+ [将模板迁移到 AWS CDK](#iac-generator-cdk-migrate)
+ [使用 CloudFormation IaC 生成器启动资源扫描](iac-generator-start-resource-scan.md)
+ [在 CloudFormation 控制台中查看扫描摘要](generate-IaC-view-scan-summary.md)
+ [使用 IaC 生成器根据扫描的资源创建 CloudFormation 模板](iac-generator-create-template-from-scanned-resources.md)
+ [根据扫描的资源创建 CloudFormation 堆栈](iac-generator-create-stack-from-scanned-resources.md)
+ [解决只写属性问题](generate-IaC-write-only-properties.md)

## 注意事项
<a name="iac-generator-considerations"></a>

您可以为您具有读取权限的 AWS 资源生成 JSON 或 YAML 模板。IaC 生成器功能模板晋江可靠、快速地对云资源进行建模，而无需按属性描述资源属性。

下表列出了 IaC 生成功能的可用限额。


| 名称 | 完全扫描 | 部分扫描 | 
| --- | --- | --- | 
| 一次扫描可以处理的最大资源数 | 100000 | 100000 | 
| 每天的扫描次数（适用于少于 10,000 个资源的扫描） | 10 | 10 | 
| 每天的扫描次数（适用于超过 10,000 个资源的扫描） | 1 | 1 | 
| 每个账户生成的并发模板数量 | 5 | 5 | 
| 为一次模板生成建模的并发资源数量 | 5 | 5 | 
| 可以在一个模板中建模的资源总数 | 500 | 500 | 
| 每账户最大生成的模板数 | 1000 | 1000 | 

**重要**  
IaC 生成器仅支持您所在区域的 Cloud Control API 支持的 AWS 资源。有关更多信息，请参阅 [资源类型支持](resource-import-supported-resources.md)。

## 扫描资源所需的 IAM 权限
<a name="iac-generator-permissions"></a>

要使用 IaC 生成器扫描资源，您的 IAM 主体（用户、角色或组）必须具备：
+ CloudFormation 扫描权限
+ 目标 AWS 服务的读取权限

扫描范围仅限于您有读取权限的资源。缺少权限不会导致扫描失败，但会排除那些资源。

有关授予扫描和模板管理权限的 IAM 策略示例，请参阅 [允许所有 IaC 生成器操作](security_iam_id-based-policy-examples.md#iam-policy-example-for-iac-generator)。

## 用于模板生成、管理和删除的常用命令
<a name="iac-generator-commonly-used-commands"></a>

使用 IaC 生成器的常用命令包括：
+ [start-resource-scan](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/start-resource-scan.html)，用于启动扫描该账户在 AWS 区域中的资源。
+ [describe-resource-scan](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-resource-scan.html)，用于监控资源扫描的进度。
+ [list-resource-scans](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-resource-scans.html)，用于列出 AWS 区域中的已扫描资源。
+ [list-resource-scan-resources](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-resource-scan-resources.html)，用于列出在资源扫描期间找到的资源。
+  [list-resource-scan-related-resources](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-resource-scan-related-resources.html)，用于列出与您扫描的资源相关的资源。
+ [create-generated-template](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-generated-template.html)，用于根据一组扫描的资源生成 CloudFormation 模板。
+ [update-generated-template](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/update-generated-template.html)，用于更新生成的模板。
+ [describe-generated-template](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-generated-template.html)，用于返回有关已生成模板的信息。
+ [list-generated-templates](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-generated-templates.html)，用于列出您的账户和当前区域中所有生成的模板。
+ [delete-generated-template](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/delete-generated-template.html)，用于删除生成的模板。

## 将模板迁移到 AWS CDK
<a name="iac-generator-cdk-migrate"></a>

AWS Cloud Development Kit (AWS CDK) 是一个开源软件开发框架，您可以通过该框架使用流行的编程语言开发、管理和部署 CloudFormation 资源。

AWS CDK CLI 提供了与 IaC 生成器的集成。使用 AWS CDK CLI `cdk migrate` 命令生成 CloudFormation 模板并创建包含您的资源的新 CDK 应用程序。然后，您可以使用 AWS CDK 管理您的资源并部署到 CloudFormation。

有关更多信息，请参阅《AWS Cloud Development Kit (AWS CDK) 开发人员指南》**中的[迁移到 AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/migrate.html)。