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

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

AWS Config 使用範例 AWS CLI

下列程式碼範例說明如何使用 AWS Command Line Interface 與來執行動作及實作常見案例 AWS Config。

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

Scenarios (案例) 是向您展示如何呼叫相同服務中的多個函數來完成特定任務的程式碼範例。

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

主題

動作

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

AWS CLI

刪除 AWS 組 Config 規則

下列命令會刪除名為的 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

取得 AWS Config 規則的合規性資訊

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

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

取得組態規則的狀 Con AWS fig 資訊

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

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

下列命令會針對所有不符合名為的 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

取得 Con AWS fig 規則的合規摘要

下列命令會傳回符合規則的數目以及不相容的數目:

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

若要取得「Con AWS fig 態」的狀態

下列命令會傳回傳送通道和組態記錄程式的狀態:

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

列出 AWS Config 發現的資源

下列命令會列出 Con AWS fig 發現的 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屬性,會指定規則所需的標籤鍵OwnerCostCenter和。

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

新增客戶管理的 Config 規則

下列命令提供 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對象是必需的。當 AWS Config 叫用 AWS Lambda 函數以根據規則評估資源時,針對InputParameters屬性指定的參數會傳遞至 Lambda 函數。

如果命令成功, 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:記錄特定類型的資源

下列命令會建立組態記錄程式,只追蹤在 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

記錄 Group.json 是一個 JSON 文件,它指定了 Config 將記錄的資源類型: AWS

{ "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" ] }

您必須先將 [全部支援] 和 [類型] 選項設定為 false 或省略它們,才能指定 resourceTypes 的資源 includeGlobalResource類型。

如果命令成功, AWS Config 不會返回任何輸出。若要驗證規劃記錄程式的設定,請執行 describe-configuration-recorders 指令。

範例 3:選取除特定資源類型以外的所有支援資源

下列命令會建立組態記錄程式,以追蹤所有目前和 future 受支援資源類型的變更,但不包括在 JSON 檔案中為-recordinggroup 選項指定的資源類型:

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

記錄 Group.json 是一個 JSON 文件,它指定了 Config 將記錄的資源類型: AWS

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

在您可以指定要從記錄中排除的資源類型之前:1) 您必須將「全部支援」和「 includeGlobalResource類型」選項設定為 false 或省略它們,以及 2) 您必須將的「僅使用」欄位設定為「EXCLUSION_BY_RESOURCE_TYPE」。 RecordingStrategy

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

snsTopicARN-Amazon Amazon SNS 主題的 Amazon 資源名稱 (ARN),組態會向其傳送有關組態變更的通知。如果您從其他帳戶選擇主題,則該主題必須具有授與 AWS Config 存取權限的政策。 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-狀態命令。

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

AWS CLI

停止組態錄製程式

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

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

如果命令成功, AWS Config 不會返回任何輸出。若要確認 AWS Config 未記錄您的資源,請執行 get-狀態命令。

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

AWS CLI

若要訂閱 AWS 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 命令參考》中的 Subscribe