

# 使用 CloudFormation IaC 生成器启动资源扫描
启动资源扫描

在从现有资源创建模板之前，您必须首先启动资源扫描以发现当前资源及其关系。

您可以使用以下选项之一启动资源扫描。对于首次使用 IaC 生成器的用户，我们推荐第一个选项。
+ **扫描所有资源（完全扫描）** - 扫描当前账户和区域中的所有现有资源。对于 1,000 个资源，此扫描过程最多可能需要 10 分钟。
+ **扫描特定资源（部分扫描）** – 在当前账户和区域中手动选择要扫描的资源类型。此选项提供更快、更集中的扫描过程，使其成为迭代模板开发的理想选择。

扫描完成后，您可以选择生成模板时要包括哪些资源及其相关资源。使用部分扫描时，相关资源仅在以下任一情况下在模板生成期间可用：
+ 您在开始扫描之前特意选择了它们，或者
+ 它们是发现所选资源类型所必需的。

例如，如果您选择 `AWS::EKS::Nodegroup` 而不选择 `AWS::EKS::Cluster`，IaC 生成器会自动在扫描中包括 `AWS::EKS::Cluster` 资源，因为发现节点组需要先发现集群。在所有其他情况下，扫描将仅包含您专门选择的资源。

**注意**  
在继续操作之前，请确认您拥有使用 IaC 生成器所需的权限。有关更多信息，请参阅 [扫描资源所需的 IAM 权限](generate-IaC.md#iac-generator-permissions)。

**Topics**
+ [

## 启动资源扫描（控制台）
](#start-resource-scan-console)
+ [

## 启动资源扫描（AWS CLI）
](#start-resource-scan-cli)

## 启动资源扫描（控制台）


**启动所有资源类型的资源扫描（完全扫描）**

1. 打开 CloudFormation 控制台的 [IaC 生成器页面](https://console.aws.amazon.com/cloudformation/home?#iac-generator)。

1. 在屏幕顶部的导航栏上，选择包含要扫描的资源的 AWS 区域。

1. 从**扫描**面板中，选择**启动新扫描**，然后选择**扫描所有资源**。

**启动特定资源类型的资源扫描（部分扫描）**

1. 打开 CloudFormation 控制台的 [IaC 生成器页面](https://console.aws.amazon.com/cloudformation/home?#iac-generator)。

1. 在屏幕顶部的导航栏上，选择包含要扫描的资源的 AWS 区域。

1. 从**扫描**面板中，选择**开始新扫描**，然后选择**扫描特定资源**。

1. 在**启动部分扫描**对话框中，最多选择 100 种资源类型，然后选择**启动扫描**。

## 启动资源扫描（AWS CLI）


**启动所有资源类型的资源扫描（完全扫描）**  
使用以下 [start-resource-scan](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/start-resource-scan.html) 命令。将 *us-east-1* 替换为包含要扫描的资源的 AWS 区域。

```
aws cloudformation start-resource-scan --region us-east-1
```

如果成功，该命令会返回该扫描的 ARN。记下 `ResourceScanId` 属性中的 ARN。创建模板将会需要该数据。

```
{
    "ResourceScanId":
      "arn:aws:cloudformation:region:account-id:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60"
}
```

**启动特定资源类型的资源扫描（部分扫描）**

1. 使用以下 [cat](https://en.wikipedia.org/wiki/Cat_(Unix)) 命令将要扫描的资源类型存储在主目录中名为 `config.json` 的 JSON 文件中。下面是扫描 Amazon EC2 实例、安全组和所有 Amazon S3 资源的示例扫描配置。

   ```
   $ cat > config.json
   [
     {
       "Types":[
         "AWS::EC2::Instance",
         "AWS::EC2::SecurityGroup",
         "AWS::S3::*"
       ]
     }
   ]
   ```

1. 使用带有 `--scan-filters` 选项的 [start-resource-scan](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/start-resource-scan.html) 命令以及您创建 `config.json` 的文件来启动部分扫描。将 *us-east-1* 替换为包含要扫描的资源的 AWS 区域。

   ```
   aws cloudformation start-resource-scan --scan-filters file://config.json --region us-east-1
   ```

   如果成功，该命令会返回该扫描的 ARN。记下 `ResourceScanId` 属性中的 ARN。创建模板将会需要该数据。

   ```
   {
       "ResourceScanId":
         "arn:aws:cloudformation:region:account-id:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60"
   }
   ```

**监控资源扫描的进度**  
使用 [describe-resource-scan](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-resource-scan.html) 命令。对于 `--resource-scan-id` 选项，请将示例 ARN 替换为实际的 ARN。

```
aws cloudformation describe-resource-scan --region us-east-1 \
  --resource-scan-id arn:aws:cloudformation:us-east-1:123456789012:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60
```

如果成功，该命令返回类似以下内容的输出：

```
{
    "ResourceScanId": "arn:aws:cloudformation:region:account-id:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60",
    "Status": "COMPLETE",
    "StartTime": "2023-08-21T03:10:38.485000+00:00",
    "EndTime": "2023-08-21T03:20:28.485000+00:00",
    "PercentageCompleted": 100.0,
    "ResourceTypes": [
        "AWS::CloudFront::CachePolicy",
        "AWS::CloudFront::OriginRequestPolicy",
        "AWS::EC2::DHCPOptions",
        "AWS::EC2::InternetGateway",
        "AWS::EC2::KeyPair",
        "AWS::EC2::NetworkAcl",
        "AWS::EC2::NetworkInsightsPath",
        "AWS::EC2::NetworkInterface",
        "AWS::EC2::PlacementGroup",
        "AWS::EC2::Route",
        "AWS::EC2::RouteTable",
        "AWS::EC2::SecurityGroup",
        "AWS::EC2::Subnet",
        "AWS::EC2::SubnetCidrBlock",
        "AWS::EC2::SubnetNetworkAclAssociation",
        "AWS::EC2::SubnetRouteTableAssociation",
        ...
    ],
    "ResourcesRead": 676
}
```

对于部分扫描，输出将类似于以下内容：

```
{
    "ResourceScanId": "arn:aws:cloudformation:region:account-id:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60",
    "Status": "COMPLETE",
    "StartTime": "2025-03-06T18:24:19.542000+00:00",
    "EndTime": "2025-03-06T18:25:23.142000+00:00",
    "PercentageCompleted": 100.0,
    "ResourceTypes": [
        "AWS::EC2::Instance",
        "AWS::EC2::SecurityGroup",
        "AWS::S3::Bucket",
        "AWS::S3::BucketPolicy"
    ],
    "ResourcesRead": 65,
    "ScanFilters": [
        {
            "Types": [
                "AWS::EC2::Instance",
                "AWS::EC2::SecurityGroup",
                "AWS::S3::*"
            ]
        }
    ]
}
```

有关输出中字段的描述，请参阅《AWS CloudFormation API 参考》中的 [DescribeResourceScan](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeResourceScan.html)**。