

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 透過 CloudFormation IaC 產生器啟動資源掃描
<a name="iac-generator-start-resource-scan"></a>

從現有資源建立範本前，您必須先啟動資源掃描，以探索目前的資源及其彼此間的關係。

您可以透過下列其中一種方式啟動資源掃描。對於 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)

## 啟動資源掃描 (主控台)
<a name="start-resource-scan-console"></a>

**啟動所有資源類型的資源掃描 (完整掃描)**

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)
<a name="start-resource-scan-cli"></a>

**啟動所有資源類型的資源掃描 (完整掃描)**  
使用以下 [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. 使用 [start-resource-scan](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/start-resource-scan.html) 命令，搭配 `--scan-filters` 選項和您建立的 `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)。