AWS Config 使用 的範例 AWS CLI - AWS SDK 程式碼範例

文件 AWS SDK AWS 範例 SDK 儲存庫中有更多可用的 GitHub 範例。

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

AWS Config 使用 的範例 AWS CLI

下列程式碼範例示範如何使用 AWS Command Line Interface 搭配 來執行動作和實作常見案例 AWS Config。

Actions 是大型程式的程式碼摘錄,必須在內容中執行。雖然 動作會示範如何呼叫個別服務函數,但您可以在其相關案例中查看內容中的動作。

每個範例都包含完整原始程式碼的連結,您可以在其中找到如何在內容中設定和執行程式碼的指示。

主題

動作

下列程式碼範例示範如何使用 delete-config-rule

AWS CLI

若要刪除 Config AWS 規則

下列命令會刪除名為 的 AWS Config 規則MyConfigRule

aws configservice delete-config-rule --config-rule-name MyConfigRule
  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 DeleteConfigRule

下列程式碼範例示範如何使用 delete-delivery-channel

AWS CLI

若要刪除交付管道

下列命令會刪除預設交付管道:

aws configservice delete-delivery-channel --delivery-channel-name default

下列程式碼範例示範如何使用 delete-evaluation-results

AWS CLI

手動刪除評估結果

下列命令會刪除受 AWS 管規則 s3-bucket-versioning-enabled 的目前評估結果:

aws configservice delete-evaluation-results --config-rule-name s3-bucket-versioning-enabled

下列程式碼範例示範如何使用 deliver-config-snapshot

AWS CLI

交付組態快照

下列命令會將組態快照傳送至屬於預設交付通道的 Amazon S3 儲存貯體:

aws configservice deliver-config-snapshot --delivery-channel-name default

輸出:

{ "configSnapshotId": "d0333b00-a683-44af-921e-examplefb794" }

下列程式碼範例示範如何使用 describe-compliance-by-config-rule

AWS CLI

取得 Config AWS 規則的合規資訊

下列命令會傳回一或多個 AWS 資源違反的每個 AWS Config 規則的合規資訊:

aws configservice describe-compliance-by-config-rule --compliance-types NON_COMPLIANT

在輸出中,每個CappedCount屬性的值會指出有多少資源不符合相關規則。例如,下列輸出表示 3 個資源不符合名為 的規則InstanceTypesAreT2micro

輸出:

{ "ComplianceByConfigRules": [ { "Compliance": { "ComplianceContributorCount": { "CappedCount": 3, "CapExceeded": false }, "ComplianceType": "NON_COMPLIANT" }, "ConfigRuleName": "InstanceTypesAreT2micro" }, { "Compliance": { "ComplianceContributorCount": { "CappedCount": 10, "CapExceeded": false }, "ComplianceType": "NON_COMPLIANT" }, "ConfigRuleName": "RequiredTagsForVolumes" } ] }

下列程式碼範例示範如何使用 describe-compliance-by-resource

AWS CLI

取得 AWS 資源的合規資訊

下列命令會傳回 Config 記錄且違反一或多個規則的每個 EC2 AWS 執行個體的合規資訊:

aws configservice describe-compliance-by-resource --resource-type AWS::EC2::Instance --compliance-types NON_COMPLIANT

在輸出中,每個CappedCount屬性的值會指出資源違反多少規則。例如,下列輸出表示執行個體i-1a2b3c4d違反 2 個規則。

輸出:

{ "ComplianceByResources": [ { "ResourceType": "AWS::EC2::Instance", "ResourceId": "i-1a2b3c4d", "Compliance": { "ComplianceContributorCount": { "CappedCount": 2, "CapExceeded": false }, "ComplianceType": "NON_COMPLIANT" } }, { "ResourceType": "AWS::EC2::Instance", "ResourceId": "i-2a2b3c4d ", "Compliance": { "ComplianceContributorCount": { "CappedCount": 3, "CapExceeded": false }, "ComplianceType": "NON_COMPLIANT" } } ] }

下列程式碼範例示範如何使用 describe-config-rule-evaluation-status

AWS CLI

若要取得 Config AWS 規則的狀態資訊

下列命令會傳回名為 之 AWS Config 規則的狀態資訊MyConfigRule

aws configservice describe-config-rule-evaluation-status --config-rule-names MyConfigRule

輸出:

{ "ConfigRulesEvaluationStatus": [ { "ConfigRuleArn": "arn:aws:config:us-east-1:123456789012:config-rule/config-rule-abcdef", "FirstActivatedTime": 1450311703.844, "ConfigRuleId": "config-rule-abcdef", "LastSuccessfulInvocationTime": 1450314643.156, "ConfigRuleName": "MyConfigRule" } ] }

下列程式碼範例示範如何使用 describe-config-rules

AWS CLI

若要取得 Config AWS 規則的詳細資訊

下列命令會傳回名為 之 AWS Config 規則的詳細資訊InstanceTypesAreT2micro

aws configservice describe-config-rules --config-rule-names InstanceTypesAreT2micro

輸出:

{ "ConfigRules": [ { "ConfigRuleState": "ACTIVE", "Description": "Evaluates whether EC2 instances are the t2.micro type.", "ConfigRuleName": "InstanceTypesAreT2micro", "ConfigRuleArn": "arn:aws:config:us-east-1:123456789012:config-rule/config-rule-abcdef", "Source": { "Owner": "CUSTOM_LAMBDA", "SourceIdentifier": "arn:aws:lambda:us-east-1:123456789012:function:InstanceTypeCheck", "SourceDetails": [ { "EventSource": "aws.config", "MessageType": "ConfigurationItemChangeNotification" } ] }, "InputParameters": "{\"desiredInstanceType\":\"t2.micro\"}", "Scope": { "ComplianceResourceTypes": [ "AWS::EC2::Instance" ] }, "ConfigRuleId": "config-rule-abcdef" } ] }

下列程式碼範例示範如何使用 describe-configuration-recorder-status

AWS CLI

取得組態記錄器的狀態資訊

下列命令會傳回預設組態記錄器的狀態:

aws configservice describe-configuration-recorder-status

輸出:

{ "ConfigurationRecordersStatus": [ { "name": "default", "lastStatus": "SUCCESS", "recording": true, "lastStatusChangeTime": 1452193834.344, "lastStartTime": 1441039997.819, "lastStopTime": 1441039992.835 } ] }

下列程式碼範例示範如何使用 describe-configuration-recorders

AWS CLI

若要取得組態記錄器的詳細資訊

下列命令會傳回預設組態記錄器的詳細資訊:

aws configservice describe-configuration-recorders

輸出:

{ "ConfigurationRecorders": [ { "recordingGroup": { "allSupported": true, "resourceTypes": [], "includeGlobalResourceTypes": true }, "roleARN": "arn:aws:iam::123456789012:role/config-ConfigRole-A1B2C3D4E5F6", "name": "default" } ] }

下列程式碼範例示範如何使用 describe-delivery-channel-status

AWS CLI

取得交付管道的狀態資訊

下列命令會傳回交付通道的狀態:

aws configservice describe-delivery-channel-status

輸出:

{ "DeliveryChannelsStatus": [ { "configStreamDeliveryInfo": { "lastStatusChangeTime": 1452193834.381, "lastStatus": "SUCCESS" }, "configHistoryDeliveryInfo": { "lastSuccessfulTime": 1450317838.412, "lastStatus": "SUCCESS", "lastAttemptTime": 1450317838.412 }, "configSnapshotDeliveryInfo": { "lastSuccessfulTime": 1452185597.094, "lastStatus": "SUCCESS", "lastAttemptTime": 1452185597.094 }, "name": "default" } ] }

下列程式碼範例示範如何使用 describe-delivery-channels

AWS CLI

若要取得有關交付管道的詳細資訊

下列命令會傳回有關交付管道的詳細資訊:

aws configservice describe-delivery-channels

輸出:

{ "DeliveryChannels": [ { "snsTopicARN": "arn:aws:sns:us-east-1:123456789012:config-topic", "name": "default", "s3BucketName": "config-bucket-123456789012" } ] }

下列程式碼範例示範如何使用 get-compliance-details-by-config-rule

AWS CLI

若要取得 Config AWS 規則的評估結果

下列命令會傳回不符合名為 之 AWS Config 規則的所有資源的評估結果InstanceTypesAreT2micro

aws configservice get-compliance-details-by-config-rule --config-rule-name InstanceTypesAreT2micro --compliance-types NON_COMPLIANT

輸出:

{ "EvaluationResults": [ { "EvaluationResultIdentifier": { "OrderingTimestamp": 1450314635.065, "EvaluationResultQualifier": { "ResourceType": "AWS::EC2::Instance", "ResourceId": "i-1a2b3c4d", "ConfigRuleName": "InstanceTypesAreT2micro" } }, "ResultRecordedTime": 1450314645.261, "ConfigRuleInvokedTime": 1450314642.948, "ComplianceType": "NON_COMPLIANT" }, { "EvaluationResultIdentifier": { "OrderingTimestamp": 1450314635.065, "EvaluationResultQualifier": { "ResourceType": "AWS::EC2::Instance", "ResourceId": "i-2a2b3c4d", "ConfigRuleName": "InstanceTypesAreT2micro" } }, "ResultRecordedTime": 1450314645.18, "ConfigRuleInvokedTime": 1450314642.902, "ComplianceType": "NON_COMPLIANT" }, { "EvaluationResultIdentifier": { "OrderingTimestamp": 1450314635.065, "EvaluationResultQualifier": { "ResourceType": "AWS::EC2::Instance", "ResourceId": "i-3a2b3c4d", "ConfigRuleName": "InstanceTypesAreT2micro" } }, "ResultRecordedTime": 1450314643.346, "ConfigRuleInvokedTime": 1450314643.124, "ComplianceType": "NON_COMPLIANT" } ] }

下列程式碼範例示範如何使用 get-compliance-details-by-resource

AWS CLI

若要取得 AWS 資源的評估結果

下列命令會傳回 EC2 執行個體i-1a2b3c4d未遵守之每個規則的評估結果:

aws configservice get-compliance-details-by-resource --resource-type AWS::EC2::Instance --resource-id i-1a2b3c4d --compliance-types NON_COMPLIANT

輸出:

{ "EvaluationResults": [ { "EvaluationResultIdentifier": { "OrderingTimestamp": 1450314635.065, "EvaluationResultQualifier": { "ResourceType": "AWS::EC2::Instance", "ResourceId": "i-1a2b3c4d", "ConfigRuleName": "InstanceTypesAreT2micro" } }, "ResultRecordedTime": 1450314643.288, "ConfigRuleInvokedTime": 1450314643.034, "ComplianceType": "NON_COMPLIANT" }, { "EvaluationResultIdentifier": { "OrderingTimestamp": 1450314635.065, "EvaluationResultQualifier": { "ResourceType": "AWS::EC2::Instance", "ResourceId": "i-1a2b3c4d", "ConfigRuleName": "RequiredTagForEC2Instances" } }, "ResultRecordedTime": 1450314645.261, "ConfigRuleInvokedTime": 1450314642.948, "ComplianceType": "NON_COMPLIANT" } ] }

下列程式碼範例示範如何使用 get-compliance-summary-by-config-rule

AWS CLI

取得 Config AWS 規則的合規摘要

下列命令會傳回合規的規則數目和不合規的數目:

aws configservice get-compliance-summary-by-config-rule

在輸出中,每個CappedCount屬性的值會指出有多少規則符合或不合規。

輸出:

{ "ComplianceSummary": { "NonCompliantResourceCount": { "CappedCount": 3, "CapExceeded": false }, "ComplianceSummaryTimestamp": 1452204131.493, "CompliantResourceCount": { "CappedCount": 2, "CapExceeded": false } } }

下列程式碼範例示範如何使用 get-compliance-summary-by-resource-type

AWS CLI

取得所有資源類型的合規摘要

下列命令會傳回不合規 AWS 的資源數目,以及合規的數目:

aws configservice get-compliance-summary-by-resource-type

在輸出中,每個CappedCount屬性的值會指出多少資源符合或不合規。

輸出:

{ "ComplianceSummariesByResourceType": [ { "ComplianceSummary": { "NonCompliantResourceCount": { "CappedCount": 16, "CapExceeded": false }, "ComplianceSummaryTimestamp": 1453237464.543, "CompliantResourceCount": { "CappedCount": 10, "CapExceeded": false } } } ] }

取得特定資源類型的合規摘要

下列命令會傳回不合規的 EC2 執行個體數目,以及合規的數目:

aws configservice get-compliance-summary-by-resource-type --resource-types AWS::EC2::Instance

在輸出中,每個CappedCount屬性的值會指出多少資源符合或不合規。

輸出:

{ "ComplianceSummariesByResourceType": [ { "ResourceType": "AWS::EC2::Instance", "ComplianceSummary": { "NonCompliantResourceCount": { "CappedCount": 3, "CapExceeded": false }, "ComplianceSummaryTimestamp": 1452204923.518, "CompliantResourceCount": { "CappedCount": 7, "CapExceeded": false } } } ] }

下列程式碼範例示範如何使用 get-resource-config-history

AWS CLI

若要取得 AWS 資源的組態歷史記錄

下列命令會傳回 ID 為 的 EC2 執行個體的組態項目清單i-1a2b3c4d

aws configservice get-resource-config-history --resource-type AWS::EC2::Instance --resource-id i-1a2b3c4d

下列程式碼範例示範如何使用 get-status

AWS CLI

若要取得 AWS Config 的狀態

下列命令會傳回交付管道和組態記錄器的狀態:

aws configservice get-status

輸出:

Configuration Recorders: name: default recorder: ON last status: SUCCESS Delivery Channels: name: default last stream delivery status: SUCCESS last history delivery status: SUCCESS last snapshot delivery status: SUCCESS
  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 GetStatus

下列程式碼範例示範如何使用 list-discovered-resources

AWS CLI

列出 Config AWS 發現的資源

下列命令會列出 AWS Config 發現的 EC2 執行個體:

aws configservice list-discovered-resources --resource-type AWS::EC2::Instance

輸出:

{ "resourceIdentifiers": [ { "resourceType": "AWS::EC2::Instance", "resourceId": "i-1a2b3c4d" }, { "resourceType": "AWS::EC2::Instance", "resourceId": "i-2a2b3c4d" }, { "resourceType": "AWS::EC2::Instance", "resourceId": "i-3a2b3c4d" } ] }

下列程式碼範例示範如何使用 put-config-rule

AWS CLI

若要新增 AWS 受管 Config 規則

下列命令提供 JSON 程式碼來新增 AWS 受管 Config 規則:

aws configservice put-config-rule --config-rule file://RequiredTagsForEC2Instances.json

RequiredTagsForEC2Instances.json 是包含規則組態的 JSON 檔案:

{ "ConfigRuleName": "RequiredTagsForEC2Instances", "Description": "Checks whether the CostCenter and Owner tags are applied to EC2 instances.", "Scope": { "ComplianceResourceTypes": [ "AWS::EC2::Instance" ] }, "Source": { "Owner": "AWS", "SourceIdentifier": "REQUIRED_TAGS" }, "InputParameters": "{\"tag1Key\":\"CostCenter\",\"tag2Key\":\"Owner\"}" }

對於 ComplianceResourceTypes 屬性,此JSON碼會將範圍限制為 AWS::EC2::Instance類型的資源,因此 AWS Config 只會根據規則評估 EC2 執行個體。由於規則是受管規則,Owner屬性會設定為 AWSSourceIdentifier屬性會設定為規則識別符 REQUIRED_TAGS。對於 InputParameters 屬性,會指定規則所需的標籤金鑰 OwnerCostCenter和 。

如果命令成功, AWS Config 不會傳回任何輸出。若要驗證規則組態,請執行 describe-config-rules 命令,並指定規則名稱。

新增客戶受管組態規則

下列命令提供 JSON 程式碼來新增客戶受管 Config 規則:

aws configservice put-config-rule --config-rule file://InstanceTypesAreT2micro.json

InstanceTypesAreT2micro.json 是包含規則組態的 JSON 檔案:

{ "ConfigRuleName": "InstanceTypesAreT2micro", "Description": "Evaluates whether EC2 instances are the t2.micro type.", "Scope": { "ComplianceResourceTypes": [ "AWS::EC2::Instance" ] }, "Source": { "Owner": "CUSTOM_LAMBDA", "SourceIdentifier": "arn:aws:lambda:us-east-1:123456789012:function:InstanceTypeCheck", "SourceDetails": [ { "EventSource": "aws.config", "MessageType": "ConfigurationItemChangeNotification" } ] }, "InputParameters": "{\"desiredInstanceType\":\"t2.micro\"}" }

對於 ComplianceResourceTypes 屬性,此JSON碼會將範圍限制為 AWS::EC2::Instance類型的資源,因此 AWS Config 只會根據規則評估 EC2 執行個體。由於此規則是客戶受管規則,因此Owner屬性會設定為 CUSTOM_LAMBDA,而SourceIdentifier屬性會設定為 AWS Lambda 函數的 ARN。物件為必要SourceDetails項目。Config 調用屬性來評估資源時,為 InputParameters 屬性指定的參數會傳遞至 AWS Lambda AWS 函數。

如果命令成功, AWS Config 不會傳回任何輸出。若要驗證規則組態,請執行 describe-config-rules 命令,並指定規則名稱。

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 PutConfigRule

下列程式碼範例示範如何使用 put-configuration-recorder

AWS CLI

範例 1:記錄所有支援的資源

下列命令會建立組態記錄器,追蹤所有支援資源類型的變更,包括全域資源類型:

aws configservice put-configuration-recorder \ --configuration-recorder name=default,roleARN=arn:aws:iam::123456789012:role/config-role \ --recording-group allSupported=true,includeGlobalResourceTypes=true

如果命令成功, AWS Config 不會傳回任何輸出。若要驗證組態記錄器的設定,請執行 describe-configuration-recorders 命令。

範例 2:記錄特定類型的資源

下列命令會建立組態記錄器,僅追蹤 --recording-group 選項的 JSON 檔案中指定的資源類型變更:

aws configservice put-configuration-recorder \ --configuration-recorder name=default,roleARN=arn:aws:iam::123456789012:role/config-role \ --recording-group file://recordingGroup.json

recordingGroup.json 是一種 JSON 檔案,指定 AWS Config 將記錄的資源類型:

{ "allSupported": false, "includeGlobalResourceTypes": false, "resourceTypes": [ "AWS::EC2::EIP", "AWS::EC2::Instance", "AWS::EC2::NetworkAcl", "AWS::EC2::SecurityGroup", "AWS::CloudTrail::Trail", "AWS::EC2::Volume", "AWS::EC2::VPC", "AWS::IAM::User", "AWS::IAM::Policy" ] }

您必須先將 allSupported 和 includeGlobalResource 類型選項設定為 false 或省略它們,才能指定 resourceTypes 金鑰的資源類型。

如果命令成功, AWS Config 不會傳回任何輸出。若要驗證組態記錄器的設定,請執行 describe-configuration-recorders 命令。

範例 3:選取所有支援的資源,不包括特定類型的資源

下列命令會建立組態記錄器,追蹤所有目前和未來支援的資源類型變更,但不包括 --recording-group 選項的 JSON 檔案中指定的這些資源類型:

aws configservice put-configuration-recorder \ --configuration-recorder name=default,roleARN=arn:aws:iam::123456789012:role/config-role \ --recording-group file://recordingGroup.json

recordingGroup.json 是一種 JSON 檔案,指定 AWS Config 將記錄的資源類型:

{ "allSupported": false, "exclusionByResourceTypes": { "resourceTypes": [ "AWS::Redshift::ClusterSnapshot", "AWS::RDS::DBClusterSnapshot", "AWS::CloudFront::StreamingDistribution" ] }, "includeGlobalResourceTypes": false, "recordingStrategy": { "useOnly": "EXCLUSION_BY_RESOURCE_TYPES" }, }

您必須先將 allSupported 和 includeGlobalResource 類型選項設定為 false 或省略它們,以及 2) 您必須將 RecordingStrategy 的 useOnly 欄位設定為 EXCLUSION_BY_RESOURCE_TYPES,才能指定要排除錄製的資源類型:1)

如果命令成功, AWS Config 不會傳回任何輸出。若要驗證組態記錄器的設定,請執行 describe-configuration-recorders 命令。

下列程式碼範例示範如何使用 put-delivery-channel

AWS CLI

建立交付管道

下列命令會以 JSON 程式碼的形式提供交付管道的設定:

aws configservice put-delivery-channel --delivery-channel file://deliveryChannel.json

deliveryChannel.json 檔案會指定交付管道屬性:

{ "name": "default", "s3BucketName": "config-bucket-123456789012", "snsTopicARN": "arn:aws:sns:us-east-1:123456789012:config-topic", "configSnapshotDeliveryProperties": { "deliveryFrequency": "Twelve_Hours" } }

此範例會設定下列屬性:

name - 交付管道的名稱。根據預設, AWS Config 會將名稱指派給default新的交付管道。您無法使用 put-delivery-channel命令更新交付管道名稱。如需變更名稱的步驟,請參閱重新命名交付管道。s3BucketName- Config AWS 交付組態快照和組態歷史記錄檔案的 Amazon S3 儲存貯體名稱。如果您指定屬於另一個 AWS 帳戶的儲存貯體,該儲存貯體必須具有將存取權授予 AWS Config 的政策。如需詳細資訊,請參閱《Amazon S3 儲存貯體許可》。

snsTopicARN - 設定傳送組態變更通知的 Amazon SNS AWS 主題的 Amazon Resource Name (ARN)。如果您從另一個帳戶選擇主題,該主題必須具有將存取權授予 Config AWS 的政策。如需詳細資訊,請參閱 Amazon SNS 主題的許可。

configSnapshotDeliveryProperties - 包含 deliveryFrequency 屬性,這會設定 Config AWS 交付組態快照的頻率,以及它叫用定期 Config 規則評估的頻率。

如果命令成功, AWS Config 不會傳回任何輸出。若要驗證交付管道的設定,請執行 describe-delivery-channels 命令。

下列程式碼範例示範如何使用 start-config-rules-evaluation

AWS CLI

執行 Config AWS 規則的隨需評估

下列命令會啟動兩個 AWS 受管規則的評估:

aws configservice start-config-rules-evaluation --config-rule-names s3-bucket-versioning-enabled cloudtrail-enabled

下列程式碼範例示範如何使用 start-configuration-recorder

AWS CLI

啟動組態記錄器

下列命令會啟動預設組態記錄器:

aws configservice start-configuration-recorder --configuration-recorder-name default

如果命令成功, AWS Config 不會傳回任何輸出。若要驗證 AWS Config 正在記錄您的資源,請執行 get-status 命令。

下列程式碼範例示範如何使用 stop-configuration-recorder

AWS CLI

停止組態記錄器

下列命令會停止預設組態記錄器:

aws configservice stop-configuration-recorder --configuration-recorder-name default

如果命令成功, AWS Config 不會傳回任何輸出。若要驗證 AWS Config 是否未記錄您的資源,請執行 get-status 命令。

下列程式碼範例示範如何使用 subscribe

AWS CLI

訂閱 AWS Config

下列命令會建立預設交付管道和組態記錄器。命令也會指定 AWS Config 將交付組態資訊的 Amazon S3 儲存貯體和 Amazon SNS 主題:

aws configservice subscribe --s3-bucket config-bucket-123456789012 --sns-topic arn:aws:sns:us-east-1:123456789012:config-topic --iam-role arn:aws:iam::123456789012:role/ConfigRole-A1B2C3D4E5F6

輸出:

Using existing S3 bucket: config-bucket-123456789012 Using existing SNS topic: arn:aws:sns:us-east-1:123456789012:config-topic Subscribe succeeded: Configuration Recorders: [ { "recordingGroup": { "allSupported": true, "resourceTypes": [], "includeGlobalResourceTypes": false }, "roleARN": "arn:aws:iam::123456789012:role/ConfigRole-A1B2C3D4E5F6", "name": "default" } ] Delivery Channels: [ { "snsTopicARN": "arn:aws:sns:us-east-1:123456789012:config-topic", "name": "default", "s3BucketName": "config-bucket-123456789012" } ]
  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的訂閱