AWS Config 使用示例 AWS CLI - AWS SDK代码示例

AWS 文档 AWS SDK示例 GitHub 存储库中还有更多SDK示例

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS Config 使用示例 AWS CLI

以下代码示例向您展示了如何使用with来执行操作和实现常见场景 AWS Config。 AWS Command Line Interface

操作是大型程序的代码摘录,必须在上下文中运行。您可以通过操作了解如何调用单个服务函数,还可以通过函数相关场景的上下文查看操作。

每个示例都包含一个指向完整源代码的链接,您可以在其中找到有关如何在上下文中设置和运行代码的说明。

主题

操作

以下代码示例演示如何使用 delete-config-rule

AWS CLI

删除 C AWS onfig 规则

以下命令删除名为的 AWS Config 规则MyConfigRule

aws configservice delete-config-rule --config-rule-name MyConfigRule

以下代码示例演示如何使用 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

以下代码示例演示如何使用 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 规则

以下命令提供了用于添加 AWS 托管 Config 规则的JSON代码:

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 属性,指定了规则所需的标签键 CostCenterOwner

如果命令成功, AWS Config 将不返回任何输出。要验证规则配置,请运行 describe-config-rules命令并指定规则名称。

添加客户托管的 Config 规则

以下命令提供了用于添加客户托管的 Config 规则的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_LAMBDASourceIdentifier属性设置为 AWS Lambda 函数的。ARNSourceDetails 对象为必填项。当 Confi AWS g 调用 AWS Lambda 函数来根据规则评估资源时,为该InputParameters属性指定的参数将传递给 Lambda 函数。

如果命令成功, AWS Config 将不返回任何输出。要验证规则配置,请运行 describe-config-rules命令并指定规则名称。

以下代码示例演示如何使用 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 是一个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" ] }

在为 resourceTypes 密钥指定资源类型之前,必须将 allSupported 和 includeGlobalResource类型选项设置为 false 或将其省略。

如果命令成功, 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 是一个JSON文件,用于指定 AWS Config 将记录的资源类型:

{ "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 账户,则该存储桶必须具有授予对 Config AWS 的访问权限的策略。有关更多信息,请参阅 Amazon S3 存储桶的权限。

snsTopicARN-Amazon SNS 主题的亚马逊资源名称 (ARN), AWS Config 会向其发送有关配置变更的通知。如果您从其他账户中选择一个主题,则该主题必须具有授予对 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-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 存储桶和亚马逊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" } ]