透過 CloudFormation IaC 產生器啟動資源掃描 - AWS CloudFormation

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

透過 CloudFormation IaC 產生器啟動資源掃描

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

您可以透過下列其中一種方式啟動資源掃描。對於 IaC 產生器的首次使用者,建議選擇第一種方式。

  • 掃描所有資源 (完整掃描) – 掃描目前帳戶和區域中的所有現有資源。對於 1,000 個資源,此掃描程序可能需要長達 10 分鐘。

  • 掃描特定資源 (部分掃描) – 手動選擇要在目前帳戶和區域中掃描的資源類型。此選項提供更快且更具針對性的掃描程序,非常適用於反覆式範本開發。

掃描完成後,您可以選擇要在產生範本時納入哪些資源及其相關資源。使用部分掃描時,相關資源僅在下列任一情況下會在範本產生期間可供使用:

  • 您在啟動掃描前已明確選取它們,或

  • 它們是探索您所選資源類型必需的資源。

例如,若您選取 AWS::EKS::Nodegroup,但未選取 AWS::EKS::Cluster,IaC 產生器會自動將 AWS::EKS::Cluster 資源納入掃描,因為探索節點群組需先探索叢集。在所有其他情況下,掃描僅會包含您明確選取的資源。

注意

繼續操作之前,請確認您具備使用 IaC 產生器所需的許可。如需詳細資訊,請參閱掃描資源所需的 IAM 許可

啟動資源掃描 (主控台)

啟動所有資源類型的資源掃描 (完整掃描)
  1. 開啟 CloudFormation 主控台的 IaC 產生器頁面

  2. 在畫面頂端的導覽列上,選擇包含掃描資源的 AWS 區域 。

  3. 掃描面板中,選擇開始新的掃描,再選擇掃描所有資源

啟動特定資源類型的資源掃描 (部分掃描)
  1. 開啟 CloudFormation 主控台的 IaC 產生器頁面

  2. 在畫面頂端的導覽列上,選擇包含掃描資源的 AWS 區域 。

  3. 掃描面板中,選擇啟動新的掃描,再選擇掃描特定資源

  4. 啟動部分掃描對話方塊中,選取最多 100 種資源類型,然後選擇啟動掃描

啟動資源掃描 (AWS CLI)

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

使用以下 start-resource-scan 命令。將 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 命令,將要掃描的資源類型儲存至主目錄中名為 config.json 的 JSON 檔案。下列是掃描設定範例,會掃描 Amazon EC2 執行個體、安全群組及所有 Amazon S3 資源。

    $ cat > config.json [ { "Types":[ "AWS::EC2::Instance", "AWS::EC2::SecurityGroup", "AWS::S3::*" ] } ]
  2. 使用 start-resource-scan 命令,搭配 --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 命令。對於 --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