自定义 Lambda 规则(Amazon EC2 示例) - Amazon Config
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

自定义 Lambda 规则(Amazon EC2 示例)

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

为了使此过程获得最佳结果,您应该在中拥有一个或多个 EC2 实例 Amazon Web Services 账户。您的实例中应包含至少一个 t2.micro 实例和其他类型的实例。

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

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

  1. 登录 Amazon Web Services Management Console 并打开 Amazon Lambda 控制台,网址为 https://console.aws.amazon.com/lambda/

  2. 在 Amazon Web Services Management Console 菜单中,确认区域选择器设置为支持 Amazon Config 规则的区域。有关支持的区域的列表,请参阅《Amazon Web Services 一般参考》中的 Amazon Config 区域和终端节点

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

  4. 选择使用蓝图。在搜索栏中,键入 config-rule-change-triggered。选择筛选结果中的蓝图,然后选择配置

  5. Configure triggers 页面上,选择 Next

  6. 基本信息页面上,完成以下步骤:

    1. 对于函数名称,请键入 InstanceTypeCheck

    2. 对于执行角色,选择从 Amazon 策略模板创建新角色

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

    4. 对于角色名称,键入名称。

    5. 对于策略模板,选择 Amazon Config 规则权限

    6. 对于 Lambda 函数代码函数,保留预配置的代码。代码编辑器中带有用于您的函数的 Node.js 代码。在本程序中,您无需更改代码。

    7. 验证详细信息,然后选择创建函数。 Amazon Lambda 控制台显示您的函数。

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

    1. 函数概述下方的菜单中选择测试,然后选择配置测试事件

    2. 对于模板,选择 Amazon Config 配置项更改通知

    3. 对于名称,键入名称。

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

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

      之所以InvalidResultTokenException是预料之中的,是因为您的函数只有在收到来自的结果令牌时才能成功运行 Amazon Config。结果令牌可以识别 Amazon Config 规则和引起评估的事件,并将评估与规则相关联。这一异常表示您的函数具备将结果发送至 Amazon Config所需的权限。否则,将出现这种错误消息:not authorized to perform: config:PutEvaluations。如果发生这一错误,请更新您分配给函数的角色以便支持 config:PutEvaluations 操作,然后再次测试您的函数。

创建用于评估 Amazon EC2 实例的自定义 Lambda 规则

  1. 打开 Amazon Config 控制台,网址为 https://console.aws.amazon.com/config/

  2. 在 Amazon Web Services Management Console 菜单中,确认区域选择器设置为与您为自定义 Lambda 规则创建 Amazon Lambda 函数的区域相同。

  3. Rules 页面,选择 Add rule

  4. 指定规则类型页面上,选择创建自定义规则

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

    1. 对于名称,键入 InstanceTypesAreT2micro

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

    3. 对于 Amazon Lambda 函数 ARN,指定 Amazon Lambda 分配给您的函数的 ARN。

      注意

      您在此步骤中指定的 ARN 不能包含 $LATEST 限定词。您可以指定不带版本限定符的 ARN,也可以使用其他任何限定符指定。$LATEST Amazon Lambda 支持函数版本控制,并且每个版本都分配了一个带有限定符的 ARN。 Amazon Lambda 使用最新版本的$LATEST限定符。

    4. 对于触发器类型,选择在配置发生更改时

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

    6. 对于资源,从资源类型下拉列表中选择 Amazon EC2 实例

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

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

  6. 选择下一步。在审核并创建页面上,验证您的规则的详细信息,然后选择添加规则函数。您的新规则将显示在 Rules 页面中。

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

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

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

      验证范围是否包括资源Amazon EC2 实例,然后重试。

    • 范围内没有资源- Amazon Config 无法根据此规则评估您记录的 Amazon 资源,因为您的所有资源都不在该规则的范围内。要获得评估结果,请编辑规则并更改其范围,或者使用 “设置” 页面添加 Amazon Config 要记录的资源。

      验证 Amazon Config 是否在记录 EC2 实例。

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

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