教程:使用 Amazon EC2 实例的状态 EventBridge - 亚马逊 EventBridge
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

教程:使用 Amazon EC2 实例的状态 EventBridge

您可以创建一个Amazon Lambda函数来记录 Amazon EC2 实例的状态变化。然后,您可以创建一个规则,以便在状态发生任何转换时运行您前面创建的函数。在此教程中,您将记录任何新实例的启动。

步骤 1:创建 Amazon Lambda 函数

创建 Lambda 函数以记录状态更改事件。在步骤 2 中创建规则时,需要指定此函数。

创建 Lambda 函数
  1. 打开 Amazon Lambda 控制台,地址:https://console.aws.amazon.com/lambda/

  2. 选择 Create function (创建函数)

  3. 选择 Author from scratch (从头开始创作)

  4. 输入 Lambda 函数的名称和说明。例如,将函数命名为 LogEC2InstanceStateChange

  5. 将其余选项保留为默认值,然后选择创建函数

  6. 在函数页面的代码选项卡上,双击 index.js

  7. 使用以下代码替换现有代码。

    'use strict'; exports.handler = (event, context, callback) => { console.log('LogEC2InstanceStateChange'); console.log('Received event:', JSON.stringify(event, null, 2)); callback(null, 'Finished'); };
  8. 选择 Deploy (部署)

步骤 2:创建规则

创建一个规则,以运行您在步骤 1 中创建的 Lambda 函数。此规则在启动 Amazon EC2 实例时运行此规则。

创建 EventBridge 规则
  1. 通过 https://console.aws.amazon.com/events/ 打开亚马逊 EventBridge 控制台。

  2. 在导航窗格中,选择 Rules (规则)

  3. 选择 Create rule (创建规则)

  4. 为规则输入名称和描述。例如,命名规则TestRule

  5. 对于 Event bus(事件总线),请选择要与此规则关联的事件总线。如果您希望此规则匹配来自您自己的账户的函数,请选择 defaul(默认)。当您账户中的某个 Amazon 服务发出一个事件时,它始终会发送到您账户的默认事件总线。

  6. 对于 Rule type(规则类型),选择 Rule with an event pattern(具有事件模式的规则)。

  7. 选择 Next(下一步)

  8. 对于 Event source(事件源),选择 Amazon services(服务)。

  9. 对于 Event pattern(事件模式),执行以下操作:

    1. 对于事件源,从下拉列表中选择 EC2

    2. 对于事件类型,请从下拉列表中选择 EC2 实例状态更改通知

    3. 选择特定状态并从下拉列表中选择 Running(运行

    4. 选择任何实例

  10. 选择 Next(下一步)

  11. 对于 Target types(目标类型),选择 Amazon service(服务)。

  12. 对于选择目标,请从下拉列表中选择 Lambda 函数

  13. 对于函数,选择您在步骤 1:创建 Lambda 函数部分中创建的 Lambda 函数。在此示例中,选择LogEC2InstanceStateChange

  14. 选择 Next(下一步)

  15. 选择 Next(下一步)

  16. 查看规则详细信息并选择 Create rule(创建规则)。

步骤 3:测试规则

可以使用 Amazon EC2 控制台停止 Amazon EC2 实例来测试您的规则。等待几分钟,以便实例停止,然后在 CloudWatch控制台上检查您的Amazon Lambda指标,以验证您的函数是否运行。

通过停止一个实例来测试您的规则
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 启动一个实例。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的启动您的实例

  3. 停止实例。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的停止和启动实例

  4. 要查看 Lambda 函数的输出,请执行以下操作:

    1. 通过 https://console.aws.amazon.com/cloudwatch/ 打开 CloudWatch 主机。

    2. 在导航窗格中,选择日志

    3. 选择您的 Lambda 函数 (/aws/lambda/function-name) 的日志组的名称。

    4. 选择日志流的名称,以查看您停止的实例的函数提供的数据。

  5. (可选)当您完成后,终止已停止的实例。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的终止实例

步骤 4:确认成功

如果您在 CloudWatch 日志中看到 Lambda 事件,则表示您已成功完成本教程。如果事件不在您的 CloudWatch 日志中,请通过验证规则是否成功创建来开始故障排除,如果规则看起来正确,请验证 Lambda 函数的代码是否正确。

步骤 5:清理资源

除非您想要保留为本教程创建的资源,否则可立即将其删除。通过删除您不再使用的Amazon资源,可防止您的Amazon账户产生不必要的费用。

删除 EventBridge 规则
  1. 打开 EventBridge 控制台的规则页面

  2. 选择您创建的一个或多个规则。

  3. 选择 Delete

  4. 选择 Delete

删除 Lambda 函数
  1. 打开 Lamba 控制台的 Functions(函数)页面。

  2. 选择您创建的一个或多个函数。

  3. 依次选择 ActionsDelete

  4. 选择 Delete(删除)。