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

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

将 Lambda 与 Amazon EventBridge 调度器结合使用

Amazon EventBridge 调度器是一个无服务器调度器,使您能够从一个中央托管服务创建、运行和管理任务。借助 EventBridge 调度器,您可以使用 cron 和 rate 表达式为定期模式创建计划,也可以配置一次性调用。您可以设置灵活的交付时间窗口、定义重试限制,并为未处理的事件设置最长保留时间。

当您使用 Lambda 设置 EventBridge 调度器时,EventBridge 调度器会异步调用您的 Lambda 函数。本页介绍如何使用 EventBridge 调度器按计划调用 Lambda 函数。

设置执行角色

创建新计划时,EventBridge 调度器必须有权代表您调用其目标 API 操作。您可以使用执行角色授予 EventBridge 调度器这些权限。您附加到计划执行角色的权限策略定义了所需权限。这些权限取决于您希望 EventBridge 调度器调用的目标 API。

使用 EventBridge 调度器控制台创建计划时,EventBridge 调度器会根据选择的目标自动设置执行角色,如以下步骤所示。如果您想使用 EventBridge 调度器 SDK(Amazon CLI 或 Amazon CloudFormation )之一创建计划,您必须拥有现有的执行角色,以授予 EventBridge 调度器调用目标所需的权限。有关为计划手动设置执行角色的更多信息,请参阅 EventBridge Scheduler User Guide 中的 Setting up an execution role

创建计划

使用控制台创建计划
  1. 打开 Amazon EventBridge 调度器控制台,网址为:https://console.aws.amazon.com/scheduler/home

  2. 计划页面,选择创建计划

  3. 指定计划详细信息页面,在计划名称和描述部分中,执行以下操作:

    1. 对于计划名称,输入计划的名称。例如,MyTestSchedule

    2. (可选)对于描述,输入对计划的描述。例如,My first schedule

    3. 对于计划组,从下拉列表中选择一个计划组。如果您没有计划组,选择默认。要创建计划组,选择创建自己的计划

      您可以使用计划组将标签添加到计划组。

    1. 选择计划选项。

      出现 请执行此操作...

      一次性计划

      一次性计划仅在您指定的日期和时间调用一次目标。

      对于日期和时间,请执行以下操作:

      • 输入 YYYY/MM/DD 格式的有效日期。

      • 输入 24 小时 hh:mm 格式的时间戳。

      • 对于时区,选择时区。

      定期计划

      定期计划按照您使用 cron 表达式或 rate 表达式指定的速率调用目标。

      1. 对于计划类型,执行以下操作之一:

        • 要使用 cron 表达式定义计划,请选择基于 cron 的计划并输入 cron 表达式。

        • 要使用 rate 表达式定义计划,请选择基于 rate 的计划并输入 rate 表达式。

          有关 cron 和 rate 表达式的更多信息,请参阅 Amazon EventBridge 调度器用户指南 中的 EventBridge 调度器的计划类型

      2. 对于灵活的时间窗口,选择关闭以关闭该选项,或者选择一个预定义的时间窗口。例如,如果您选择 15 分钟并且将定期计划设置为每小时调用一次其目标,则该计划将在每小时开始后的 15 分钟内运行。

  4. (可选)如果您在上一步中选择定期计划,在时间范围部分,请执行以下操作:

    1. 对于时区,请选择时区。

    2. 对于开始日期和时间,请输入 YYYY/MM/DD 格式的有效日期,然后指定 24 小时 hh:mm 格式的时间戳。

    3. 对于结束日期和时间,请输入 YYYY/MM/DD 格式的有效日期,然后指定 24 小时 hh:mm 格式的时间戳。

  5. 选择下一步

  6. 选择目标页面,选择 EventBridge 调度器调用的 Amazon API 操作:

    1. 选择 Amazon Lambda 调用

    2. 调用部分,选择功能或选择创建新 Lambda 函数

    3. (可选)输入 JSON 有效负载。如果您未输入有效负载,EventBridge 调度器将使用空事件来调用函数。

  7. 选择下一步

  8. Settings (设置) 页面上,执行以下操作:

    1. 要打开计划,在计划状态下,切换启用计划

    2. 要为计划配置重试策略,在重试策略和死信队列(DLQ)下,请执行以下操作:

      • 切换重试

      • 对于事件的最长期限,输入 EventBridge 调度器必须保留未处理事件的最长小时分钟数。

      • 最长时间为 24 小时。

      • 对于最大重试次数,输入在目标返回错误的情况下,EventBridge  调度器重试计划的最大次数。

        最大值为 185 次重试。

      配置重试策略后,如果计划未能调用其目标,EventBridge 调度器将重新运行该计划。如果已配置,则必须为计划设置最长保留时间和最大重试次数。

    3. 选择 EventBridge 调度器存储未送达事件的位置。

      死信队列(DLQ)选项 请执行此操作...
      请勿存储 选择 None
      将事件存储在创建计划所在的同一 Amazon Web Services 账户 中
      1. 选择在我的 Amazon Web Services 账户 中选择一个 Amazon SQS 队列作为 DLQ

      2. 选择 Amazon SQS 队列的 Amazon 资源名称(ARN)。

      将事件存储在与创建计划所在不同的 Amazon Web Services 账户 中
      1. 选择在另一个 Amazon Web Services 账户 中指定一个 Amazon SQS 队列作为 DLQ

      2. 输入 Amazon SQS 队列的 Amazon 资源名称(ARN)。

    4. 要使用客户托管密钥加密目标输入,在加密下,选择自定义加密设置(高级)

      如果选择此选项,请输入现有的 KMS 密钥 ARN 或选择创建一个 Amazon KMS key 以导航到 Amazon KMS 控制台。有关 EventBridge 调度器如何加密静态数据的更多信息,请参阅 Amazon EventBridge Scheduler User Guide 中的 Encryption at rest

    5. 要让 EventBridge 调度器为您创建新的执行角色,请选择为此计划创建新角色。然后,在角色名称中输入名称。如果您选择此选项,EventBridge 调度器会将模板化目标所需的必要权限附加到该角色。

  9. 选择下一步

  10. 查看并创建计划页面上,查看计划的详细信息。在每个部分中,选择编辑返回到该步骤并编辑其详细信息。

  11. 选择创建计划

    您可以在计划页面上查看新的和现有的计划列表。在状态列下,验证新计划是否已启用

要确认 EventBridge 调度器是否调用了该函数,查看该函数的 Amazon CloudWatch Logs

有关 EventBridge 调度器的详细信息,请参阅以下内容: