本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
透過 CloudFormation IaC 產生器啟動資源掃描
從現有資源建立範本前,您必須先啟動資源掃描,以探索目前的資源及其彼此間的關係。
您可以透過下列其中一種方式啟動資源掃描。對於 IaC 產生器的首次使用者,建議選擇第一種方式。
-
掃描所有資源 (完整掃描) – 掃描目前帳戶和區域中的所有現有資源。對於 1,000 個資源,此掃描程序可能需要長達 10 分鐘。
-
掃描特定資源 (部分掃描) – 手動選擇要在目前帳戶和區域中掃描的資源類型。此選項提供更快且更具針對性的掃描程序,非常適用於反覆式範本開發。
掃描完成後,您可以選擇要在產生範本時納入哪些資源及其相關資源。使用部分掃描時,相關資源僅在下列任一情況下會在範本產生期間可供使用:
-
您在啟動掃描前已明確選取它們,或
-
它們是探索您所選資源類型必需的資源。
例如,若您選取 AWS::EKS::Nodegroup,但未選取 AWS::EKS::Cluster,IaC 產生器會自動將 AWS::EKS::Cluster 資源納入掃描,因為探索節點群組需先探索叢集。在所有其他情況下,掃描僅會包含您明確選取的資源。
注意
繼續操作之前,請確認您具備使用 IaC 產生器所需的許可。如需詳細資訊,請參閱掃描資源所需的 IAM 許可。
啟動資源掃描 (主控台)
啟動所有資源類型的資源掃描 (完整掃描)
-
開啟 CloudFormation 主控台的 IaC 產生器頁面
。 -
在畫面頂端的導覽列上,選擇包含掃描資源的 AWS 區域 。
-
從掃描面板中,選擇開始新的掃描,再選擇掃描所有資源。
啟動特定資源類型的資源掃描 (部分掃描)
-
開啟 CloudFormation 主控台的 IaC 產生器頁面
。 -
在畫面頂端的導覽列上,選擇包含掃描資源的 AWS 區域 。
-
從掃描面板中,選擇啟動新的掃描,再選擇掃描特定資源。
-
在啟動部分掃描對話方塊中,選取最多 100 種資源類型,然後選擇啟動掃描。
啟動資源掃描 (AWS CLI)
啟動所有資源類型的資源掃描 (完整掃描)
使用以下 start-resource-scan 命令。將 us-east-1 取代 AWS 區域 為包含要掃描之資源的 。
aws cloudformation start-resource-scan --regionus-east-1
如果成功,此命令會傳回掃描的 ARN。請注意 ResourceScanId 屬性中的 ARN。您建立範本時會需要用到它。
{
"ResourceScanId":
"arn:aws:cloudformation:region:account-id:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60"
}
啟動特定資源類型的資源掃描 (部分掃描)
-
使用下列 cat
命令,將要掃描的資源類型儲存至主目錄中名為 config.json的 JSON 檔案。下列是掃描設定範例,會掃描 Amazon EC2 執行個體、安全群組及所有 Amazon S3 資源。$ cat >config.json[ { "Types":[ "AWS::EC2::Instance", "AWS::EC2::SecurityGroup", "AWS::S3::*" ] } ] -
使用 start-resource-scan 命令,搭配
--scan-filters選項和您建立的config.json檔案,以啟動部分掃描。將us-east-1取代為包含要掃描資源的 AWS 區域 。aws cloudformation start-resource-scan --scan-filtersfile://config.json--regionus-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 --regionus-east-1\ --resource-scan-idarn: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。