AWS Config 使用 的範例 AWS CLI - AWS Command Line Interface

本文件 AWS CLI 僅適用於 的第 1 版。如需與 第 2 版相關的文件 AWS CLI,請參閱 第 2 版使用者指南

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

AWS Config 使用 的範例 AWS CLI

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

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

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

主題

動作

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

AWS CLI

若要刪除 AWS Config 規則

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

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

下列程式碼範例示範如何使用 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

取得 AWS Config 規則的合規資訊

下列命令會傳回一或多個 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 資源的合規資訊

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

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

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

下列命令會傳回名為 之 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

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

下列命令會傳回名為 之 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

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

下列命令會傳回不符合名為 之 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

取得 AWS Config 規則的合規摘要

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

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詳細資訊,請參閱 命令參考 GetStatus中的 。 AWS CLI

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

AWS CLI

列出 AWS Config 發現的資源

下列命令會列出 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屬性會設定為 AWS,而SourceIdentifier屬性會設定為規則識別符 REQUIRED_TAGS。針對 InputParameters 屬性,Owner會指定規則所需的標籤金鑰,CostCenter以及 。

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

新增客戶受管組態規則

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

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項目。 AWS Config 調用屬性來評估資源時,為 InputParameters 屬性指定的參數會傳遞至 AWS Lambda 函數。

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

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

下列程式碼範例示範如何使用 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:記錄特定類型的資源

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

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

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

{ "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 和 類型選項設定為 false 或省略它們,才能指定 resourceTypes 金鑰的資源 includeGlobalResource類型。

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

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

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

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

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

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

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

如果命令成功, 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- AWS Config 交付組態快照和組態歷史記錄檔案的 Amazon S3 儲存貯體名稱。如果您指定屬於另一個 AWS 帳戶的儲存貯體,則該儲存貯體必須具有將存取權授予 AWS Config 的政策。如需詳細資訊,請參閱《Amazon S3 儲存貯體許可》。

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

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

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

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

AWS CLI

執行 AWS Config 規則的隨需評估

下列命令會啟動兩個 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

下列命令會建立預設交付管道和組態記錄器。命令也會指定 Config AWS 將交付組態資訊的 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 命令參考 中的訂閱