AWS Config 的自定义规则入门 - AWS Config
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

AWS Config 的自定义规则入门

此过程将引导您完成创建自定义规则的过程,该规则评估您的每个 EC2 实例是否为 t2.micro 类型。AWS Config 将针对此规则运行基于事件的评估,这意味着每次 AWS Config 检测到实例中的配置更改时,它都会检查您的实例配置。AWS Config 会将 t2.micro 实例标记为合规实例,并将所有其他实例标记为不合规。合规性状态将显示在 AWS Config 控制台中。

为保证这一程序的最佳效果,您的 AWS 账户应该拥有一个或多个 EC2 实例。您的实例中应包含至少一个 t2.micro 实例和其他类型的实例。

要创建此规则,请先通过在 AWS Lambda 控制台中自定义一个蓝图来创建一个 AWS Lambda 函数。然后,您需要在 AWS Config 中创建自定义规则,并将该规则与函数关联。

为自定义 Config 规则创建 AWS Lambda 函数

  1. 登录到 AWS 管理控制台,然后通过以下网址打开 AWS Lambda 控制台:https://console.aws.amazon.com/lambda/

  2. 在 AWS 管理控制台菜单上,验证区域选择器是否设置为支持 AWS Config 规则的区域。有关支持的区域列表,请参阅AWS Config 区域和终端节点中的Amazon Web Services 一般参考

  3. 在 AWS Lambda 控制台中,选择创建 Lambda 函数

  4. Select blueprint 页面,对于 filter,请键入 config-rule-change-triggered。选择筛选结果中的蓝图。

  5. Configure triggers 页面上,选择 Next

  6. Configure function 页面,完成以下步骤:

    1. 对于名称,输入 InstanceTypeCheck

    2. 对于 Runtime,请保留 Node.js

    3. 对于 Code entry type,请保留 Edit code inline。代码编辑器中带有用于您的函数的 Node.js 代码。在本程序中,您无需更改代码。

    4. 对于 Handler (处理程序),保留 index.handler

    5. 对于 Role,请选择 Create new role from template(s)

    6. 对于 Role name,请输入名称。

    7. 适用于Policy templates中,选择AWS Config 规则权限

    8. Configure function 页面,选择 Next

    9. Review 页面,验证您的函数的详细信息,然后选择 Create function。AWS Lambda 控制台会显示您的函数。

  7. 要验证您的函数是否设置正确,请通过以下步骤进行测试:

    1. 选择 Actions,然后选择 Configure test event

    2. Input test event 窗口中,对于 Sample event template,选择 AWS Config Change Triggered Rule

    3. 选择保存并测试。AWS Lambda 使用示例事件来测试您的函数。如果您的函数按预期运行,Execution result 下会出现与下面类似的错误消息:

      { "errorMessage": "Result Token provided is invalid", "errorType": "InvalidResultTokenException", . . .

      这些区域有:InvalidResultTokenException此处预期为,因为仅当您的函数收到结果令牌(在 AWS Config 中)。结果令牌可以识别 AWS Config 规则和引起评估的事件,并将评估与规则相关联。此异常表示您的函数具备向 AWS Config 发送结果所需的权限。否则,将出现这种错误消息:not authorized to perform: config:PutEvaluations。如果发生这一错误,请更新您分配给函数的角色以便支持 config:PutEvaluations 操作,然后再次测试您的函数。

创建自定义规则

  1. 打开 AWS Config 控制台https://console.aws.amazon.com/config/

  2. 在 AWS 管理控制台菜单上,验证区域选择器中的区域是否与您为自定义规则创建 AWS Lambda 函数时使用的区域相同。

  3. Rules 页面,选择 Add rule

  4. Add rule 页面,选择 Add custom rule

  5. Configure rule 页面,完成以下步骤:

    1. 对于名称,输入 InstanceTypesAreT2micro

    2. 对于 Description (描述),键入 Evaluates whether EC2 instances are the t2.micro type

    3. 适用于AWS Lambda 函数 ARN中,请指定 AWS Lambda 分配给您的函数的 ARN。

      注意

      您在此步骤中指定的 ARN 不能包含 $LATEST 限定词。您可以指定不带版本限定符的 ARN,也可以使用除$LATEST。AWS Lambda 支持函数版本控制,每个版本都会分配一个带限定符的 ARN。AWS Lambda 使用$LATEST最新版本的限定符。

    4. 对于 Trigger type,请选择 Configuration changes

    5. 对于 Scope of changes,请选择 Resources

    6. 对于 Resources,请选择 Instance

    7. 规则参数部分中,您必须指定您的 AWS Lambda 函数评估的规则参数和所需值。本程序中的函数会评估 desiredInstanceType 参数。

      对于 Key (键),键入 desiredInstanceType。对于 Value,键入 t2.micro

  6. 选择 Save。您的新规则将显示在 Rules 页面中。

    合规性将显示正在评估...直到 AWS Config 从您的 AWS Lambda 函数收到评估结果为止。如果规则和函数按预期运行,关于结果的汇总将在几分钟后显示。例如,2 noncompliant resource(s) 结果表示您的实例中有两个不是 t2.micro 实例,Compliant 结果表示所有实例均为 t2.micro 实例。您可以使用刷新按钮更新结果。

    如果规则或函数没有按预期运行,您可能会在 Compliance 中看到以下一项内容:

    • 未报告任何结果-AWS Config 按照规则评估了您的资源。该规则不适用于其范围内的 AWS 资源,指定的资源已删除,或者评估规则已删除。要获取评估结果,请更新规则、更改其范围或者选择 Re-evaluate

      验证范围是否包括实例对于 来说为资源,然后重试。

    • 范围内没有资源-AWS Config 无法对照规则来评估您记录的 AWS 资源,因为您的任何资源都不在规则范围内。要获取评估结果,请编辑规则并更改其范围,或者通过使用设置页.

      请检查确认 AWS Config 是否在记录 EC2 实例。

    • Evaluations failed (评估失败) - 有关可帮助您确定问题的信息,请选择规则名称以打开其详细信息页面并查看错误消息。

如果您的规则正常运行并且 AWS Config 提供了评估结果,您可以了解哪些条件影响了规则的合规性状态。您可以了解哪些资源不合规 (如果有) 及其原因。有关更多信息,请参阅 查看配置合规性