教程:使用 EventBridge 记录 AWS API 调用 - Amazon EventBridge

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

教程:使用 EventBridge 记录 AWS API 调用

您可以使用 Amazon EventBridge 规则对 AWS 服务进行的 API 调用做出反应,这些服务由 AWS CloudTrail 记录。

在本教程中,您将在 EventBridge 控制台中创建 AWS CloudTrail 跟踪、Lambda 函数和规则。当一个 Amazon EC2 实例停止时,该规则会调用 Lambda 函数。

步骤 1:创建 AWS CloudTrail 跟踪

如果您已设置了跟踪,请跳转至步骤 2。

创建跟踪
  1. 访问 https://console.aws.amazon.com/cloudtrail/,打开 CloudTrail 控制台。

  2. 依次选择 Trails (跟踪)Create trail (创建跟踪)

  3. 对于 Trail name,键入跟踪的名称。

  4. 存储位置中,选择创建新的 S3 桶

  5. AWS KMS 别名中,为 KMS 密钥键入别名。

  6. 选择 Next(下一步)。

  7. 选择 Next(下一步)。

  8. 选择 Create trail (创建跟踪)

步骤 2:创建 AWS Lambda 函数

创建 Lambda 函数以记录 API 调用事件。

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

  2. 选择创建函数

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

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

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

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

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

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

步骤 3:创建规则

创建一条规则,在停止 Amazon EC2 实例时运行您在步骤 2 中创建的 Lambda 函数。

创建 规则
  1. 打开位于 https://console.aws.amazon.com/events/ 的 Amazon EventBridge 控制台。

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

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

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

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

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

  7. 选择 Next(下一步)。

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

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

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

    2. 对于事件类型,请从下拉列表中选择通过 CloudTrail 进行的 AWS API 调用

    3. 选择特定操作并输入 StopInstances

  10. 选择 Next(下一步)。

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

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

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

  14. 选择 Next(下一步)。

  15. 选择 Next(下一步)。

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

步骤 4:测试规则

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

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

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

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

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

    1. 通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/

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

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

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

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

步骤 5:确认成功

如果您在 CloudWatch 日志中看到 Lambda 事件,说明您已成功完成本教程。如果您的 CloudWatch 日志中没有该事件,请开始故障排除,首先验证规则是否成功创建,如果规则看起来正确,再验证 Lambda 函数的代码是否正确。

步骤 6:清除资源

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

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

  2. 选择您创建的规则。

  3. 选择 Delete

  4. 选择 Delete

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

  2. 选择您创建的函数。

  3. 依次选择 ActionsDelete

  4. 选择 Delete (删除)

删除 CloudTrail 跟踪
  1. 打开 CloudTrail 控制台的 Trails(跟踪记录)页面。

  2. 选择您创建的跟踪。

  3. 选择 Delete

  4. 选择 Delete