Amazon Config 使用示例 Amazon CLI - Amazon Command Line Interface
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon Config 使用示例 Amazon CLI

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

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

场景是展示如何通过在同一服务中调用多个函数来完成特定任务任务的代码示例。

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

主题

操作

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

Amazon CLI

删除 C Amazon onfig 规则

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

aws configservice delete-config-rule --config-rule-name MyConfigRule
  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考DeleteConfigRule中的。

以下代码示例演示如何使用 delete-delivery-channel

Amazon CLI

删除配送渠道

以下命令删除默认的传送渠道:

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

以下代码示例演示如何使用 delete-evaluation-results

Amazon CLI

手动删除评估结果

以下命令删除 Amazon 托管规则 s3-的当前评估结果bucket-versioning-enabled:

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

以下代码示例演示如何使用 deliver-config-snapshot

Amazon CLI

提供配置快照

以下命令将配置快照传送到属于默认传输渠道的 Amazon S3 存储桶:

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

输出:

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

以下代码示例演示如何使用 describe-compliance-by-config-rule

Amazon CLI

获取您的 Amazon Config 规则的合规性信息

以下命令返回一个或多个 Amazon 资源违反的每个 Amazon 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

Amazon CLI

获取 Amazon 资源的合规性信息

以下命令返回由 Amazon 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

Amazon CLI

获取 Amazon Config 规则的状态信息

以下命令返回名为的 Amazon 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

Amazon CLI

获取 Amazon Config 规则的详细信息

以下命令返回名为的 Amazon 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

Amazon 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

Amazon 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

Amazon 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

Amazon 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

Amazon CLI

获取 Amazon Config 规则的评估结果

以下命令返回所有不符合名为的 Amazon 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

Amazon CLI

获取 Amazon 资源的评估结果

以下命令返回 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

Amazon CLI

获取您的 Amazon 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

Amazon CLI

获取所有资源类型的合规性摘要

以下命令返回不合规的 Amazon 资源数量和合规资源的数量:

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

Amazon CLI

获取 Amazon 资源的配置历史记录

以下命令返回 ID 为 EC2 实例的配置项目列表i-1a2b3c4d

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

以下代码示例演示如何使用 get-status

Amazon CLI

获取 Amazon 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 的详细信息,请参阅Amazon CLI 命令参考GetStatus中的。

以下代码示例演示如何使用 list-discovered-resources

Amazon CLI

列出 Amazon Config 已发现的资源

以下命令列出了 Amazon 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

Amazon CLI

添加 Amazon 托管 Config 规则

以下命令提供用于添加 Amazon 托管 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类型的资源,因此 Amazon Config 将仅根据规则评估 EC2 实例。由于该规则是托管规则,因此 Owner 属性设置为 AWSSourceIdentifier 属性设置为规则标识符 REQUIRED_TAGS。对于 InputParameters 属性,指定了规则所需的标签键 CostCenterOwner

如果命令成功, Amazon 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类型的资源,因此 Amazon Config 将仅根据规则评估 EC2 实例。由于此规则是客户托管规则,因此该Owner属性设置为CUSTOM_LAMBDA,并且该SourceIdentifier属性设置为 Lambda 函数 Amazon 的 ARN。SourceDetails 对象为必填项。当 Confi Amazon g 调用 Amazon Lambda 函数根据规则评估资源时,为该InputParameters属性指定的参数将传递给 Lambda 函数。

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

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考PutConfigRule中的。

以下代码示例演示如何使用 put-configuration-recorder

Amazon 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

如果命令成功, Amazon 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 文件,它指定了 Config Amazon 将记录的资源类型:

{ "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 和 Types 选项设置为 false 或将其省略。

如果命令成功, Amazon 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 文件,它指定了 Config Amazon 将记录的资源类型:

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

在指定要从录制中排除的资源类型之前:1) 必须将 AllSupported 和 includeGlobalResource Types 选项设置为 false 或将其省略;2) 必须将的 useOnly 字段设置为 EXCLUSION_BY_RESOURCE_TYPES RecordingStrategy 。

如果命令成功, Amazon Config 将不返回任何输出。要验证配置记录器的设置,请运行 describe-configuration-recorders 命令。

以下代码示例演示如何使用 put-delivery-channel

Amazon 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-配送渠道的名称。默认情况下, Amazon Config 会default将名称分配给新的交付渠道。您无法使用命令更新传递渠道名称。put-delivery-channel有关更改名称的步骤,请参阅重命名配送渠道。 s3BucketName- Amazon Config 向其发送配置快照和配置历史记录文件的 Amazon S3 存储桶的名称。如果您指定的存储桶属于另一个 Amazon 账户,则该存储桶必须具有授予对 Config Amazon 的访问权限的策略。有关更多信息,请参阅 Amazon S3 存储桶的权限。

snsTopicARN-Amazon SNS 主题的亚马逊资源名称 (ARN), Amazon Config 会向其发送有关配置变更的通知。如果您从其他账户选择主题,则该主题必须具有授予对 Config 的访问权限的策略。 Amazon 有关更多信息,请参阅 Amazon SNS 主题的权限。

configSnapshotDeliveryProperties-包含deliveryFrequency属性,该属性设置 Amazon Config 提供配置快照的频率以及它为定期 Config 规则调用评估的频率。

如果命令成功, Amazon Config 将不返回任何输出。要验证您的配送渠道的设置,请运行 describe-delivery-channels 命令。

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考PutDeliveryChannel中的。

以下代码示例演示如何使用 start-config-rules-evaluation

Amazon CLI

对 Amazon Config 规则进行按需评估

以下命令启动对两个 Amazon 托管规则的评估:

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

以下代码示例演示如何使用 start-configuration-recorder

Amazon CLI

启动配置记录器

以下命令启动默认配置记录器:

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

如果命令成功, Amazon Config 将不返回任何输出。要验证 Amazon Config 是否正在记录您的资源,请运行 get-status 命令。

以下代码示例演示如何使用 stop-configuration-recorder

Amazon CLI

停止配置记录器

以下命令停止默认配置记录器:

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

如果命令成功, Amazon Config 将不返回任何输出。要验证 Amazon Config 是否未记录您的资源,请运行 get-status 命令。

以下代码示例演示如何使用 subscribe

Amazon CLI

订阅 Amazon Config

以下命令创建默认传送渠道和配置记录器。该命令还指定 Config 将向其提供 Amazon 配置信息的 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 详细信息,请参阅《Amazon CLI Command Reference》中的 Subscribe