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

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

教程:ScheduleAmazon Lambda使用 EventBridge 的函数

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

对于计划,EventBridge 不在计划表达式。EV; 不在计划表达式中提供第二级精度。使用 cron 表达式的最高解析精度是一分钟。由于 EventBridge 和目标服务的分布式特性,计划规则触发时间与目标服务运行目标资源的时间之间的延迟可能有几秒钟。

第 1 步:创建Amazon Lambdafunction

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

创建 Lambda 函数

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

  2. 选择创建函数

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

  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. 打开位于 https://console.aws.amazon.com/events/ 的 Amazon EventBridge 控制台。

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

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

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

  5. 对于 Define pattern (定义模式),请执行以下操作:

    1. 选择 Schedule

    2. 选择固定速率并指定计划间隔,例如 5 分钟。

  6. 对于选择事件总线,选择 Amazon 默认事件总线。仅在默认事件总线上支持计划规则。

  7. 对于 Target (目标),选择 Lambda function (Lambda 函数)

  8. 适用于函数中,选择您在步骤 1 中创建的 Lambda 函数。

  9. 选择创建

创建规则 (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. 若要将您在步骤 1 中创建的 Lambda 函数添加到规则,请使用put-targets命令。

    aws events put-targets --rule my-scheduled-rule --targets file://targets.json
  4. 创建文件 targets.json 并输入以下内容。

    [ { "Id": "1", "Arn": "arn:aws:lambda:us-east-1:123456789012:function:LogScheduledEvent" } ]

第 3 步:验证规则

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

测试您的规则

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

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

  3. 选择您在步骤 2 中创建的规则的名称,然后选择规则的衡量指标

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

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

    2. 在导航窗格中,选择 Logs

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

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

第 4 步:确认成功

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

第 5 步:清除资源

现在,您可以删除为本教程创建的资源,除非您想要保留这些资源。通过删除Amazon您不再使用的资源,可防止您的Amazonaccount.

删除 EventBridge 梁规则

  1. 打开“规则” 页的 EventBridge 控制台。

  2. 选择您创建的规则。

  3. 选择 Delete

  4. 选择 Delete

删除 Lambda 函数

  1. 打开“函数” 页Lambda 控制台。

  2. 选择您创建的函数。

  3. 依次选择 ActionsDelete

  4. 选择 Delete