教程:使用调度 Amazon Lambda 函数 EventBridge - Amazon EventBridge
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

教程:使用调度 Amazon Lambda 函数 EventBridge

您可以设置规则,按计划运行 Amazon Lambda 函数。本教程介绍如何使用 Amazon Web Services Management Console 或 Amazon CLI 来创建规则。如果要使用 Amazon CLI 但尚未安装,请参阅安装、更新和卸载 Amazon CLI 版本 2

对于日程安排,在日程表表达式中 EventBridge 不提供二级精度。使用 cron 表达式的最高解析精度是一分钟。由于目标服务的分布式特 EventBridge 性,从触发调度规则到目标服务运行目标资源的时间之间可能会有几秒钟的延迟。

第 1 步:创建 Lambda 函数

创建 Lambda 函数来记录计划的事件。

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

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

  3. 选择从头开始创作

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

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

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

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

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

步骤 2:创建规则

创建规则,按计划运行在步骤 1 中创建的 Lambda 函数。

您可以使用控制台或 Amazon CLI 来创建规则。要使用 Amazon CLI,您需要先向规则授予调用您的 Lambda 函数的权限。然后,您可以创建规则并将该 Lambda 函数添加为目标。

创建规则(控制台)
  1. 打开亚马逊 EventBridge 控制台,网址为 https://console.aws.amazon.com/events/

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

  3. 选择创建规则

  4. 为规则输入名称和描述。

    规则不能与同一区域中的另一个规则和同一事件总线上的名称相同。

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

  6. 对于 Rule type(规则类型),选择 Schedule(计划)。

  7. 选择下一步

  8. 计划模式中,选择以固定频率运行的计划,例如每 10 分钟运行一次,然后输入 5 并从下拉列表中选择分钟

  9. 选择 Next(下一步)

  10. 对于目标类型,选择Amazon 服务

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

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

  13. 选择下一步

  14. 选择下一步

  15. 查看规则详细信息并选择创建规则

创建规则 (Amazon CLI)
  1. 要创建按计划运行的规则,请使用 put-rule 命令。

    aws events put-rule \ --name my-scheduled-rule \ --schedule-expression 'rate(5 minutes)'

    此规则运行时,会创建一个事件,然后将其发送到目标。以下是示例事件。

    { "version": "0", "id": "53dc4d37-cffa-4f76-80c9-8b7d4a4d2eaa", "detail-type": "Scheduled Event", "source": "aws.events", "account": "123456789012", "time": "2015-10-08T16:53:06Z", "region": "us-east-1", "resources": [ "arn:aws:events:us-east-1:123456789012:rule/my-scheduled-rule" ], "detail": {} }
  2. 要向 EventBridge 服务主体 (events.amazonaws.com) 授予运行规则的权限,请使用add-permission命令。

    aws lambda add-permission \ --function-name LogScheduledEvent \ --statement-id my-scheduled-event \ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1:123456789012:rule/my-scheduled-rule
  3. 创建文件 targets.json 并输入以下内容。

    [ { "Id": "1", "Arn": "arn:aws:lambda:us-east-1:123456789012:function:LogScheduledEvent" } ]
  4. 要将您在步骤 1 中创建的 Lambda 函数添加到规则中,请使用 put-targets 命令。

    aws events put-targets --rule my-scheduled-rule --targets file://targets.json

步骤 3:验证规则

完成步骤 2 后至少等待五分钟,然后您可以验证是否已调用 Lambda 函数。

查看 Lambda 函数的输出
  1. 打开 CloudWatch 控制台,网址为 https://console.aws.amazon.com/cloudwatch/

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

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

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

步骤 4:确认成功

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

步骤 5:清理资源

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

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

  2. 选择您创建的规则。

  3. 选择 Delete

  4. 选择 Delete

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

  2. 选择您创建的函数。

  3. 依次选择 ActionsDelete

  4. 选择 删除