

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

# 开始使用 EventBridge 调度器
<a name="getting-started"></a>

本主题介绍如何创建新的 EventBridge 调度器计划。您可以使用 EventBridge 调度器控制台、AWS Command Line Interface (AWS CLI) 或 AWS 软件开发工具包来创建带有模板化 Amazon SQS 目标的计划。然后，您将设置日志记录，配置重试次数，并为失败的任务设置最长保留时间。创建计划后，您将验证您的计划是否成功调用了目标并向目标队列发送了消息。

**注意**  
要遵循本指南，我们建议您使用 [在调度程序中使用基于身份的策略 EventBridge](security_iam_id-based-policy-examples.md) 中所述的最低要求权限设置 IAM 用户。创建和配置用户后，运行以下命令来设置您的访问凭证。要配置 AWS CLI，您需要访问密钥 ID 和秘密访问密钥。  

```
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
```
有关设置凭证的不同方式的更多信息，请参阅《版本 2 AWS Command Line Interface 用户指南》**中的[配置设置和优先级](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-precedence)。

**Topics**
+ [先决条件](#getting-started-prerequisites)
+ [使用 EventBridge 调度器控制台创建计划](#getting-started-console)
+ [使用 AWS CLI 创建计划](#getting-started-cli)
+ [使用 EventBridge 调度器开发工具包创建计划](#getting-started-sdk)
+ [接下来做什么？](#working-with-cli-sdk-whats-next)

## 先决条件
<a name="getting-started-prerequisites"></a>

在尝试本部分中的步骤之前，您必须执行以下操作：
+  完成 [设置 Amazon EventBridge 日程安排](setting-up.md) 中所述的任务 

## 使用 EventBridge 调度器控制台创建计划
<a name="getting-started-console"></a>

**要使用控制台创建新计划**

1. 登录 AWS 管理控制台，然后选择以下链接打开 EventBridge 控制台的 EventBridge 调度器部分：[https://us-west-2.console.aws.amazon.com/scheduler/home?region=us-west-2\$1home](https://us-west-2.console.aws.amazon.com/scheduler/home?region=us-west-2#home) 
**注意**  
 您可以使用 AWS 管理控制台 的区域选择器切换 AWS 区域。

1.  在**计划**页面，选择**创建计划**。

1.  在**指定计划详细信息**页面，在**计划名称和描述**部分中，执行以下操作：

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

   1. 对于**描述（*可选*）**，输入对计划的描述。例如 **My first schedule**。

   1. 对于**计划组**，从下拉选项中选择一个计划组。如果您之前没有创建过任何计划组，则可以为您的计划选择 `default` 组。要创建新的计划组，请在控制台描述中选择**创建自己的计划**链接。您可以使用计划组将标签添加到计划组。

1. 在**计划模式**部分执行以下操作：

   1.  在**出现**中，请选择以下模式选项之一。配置选项会根据您选择的模式而变化。
      + **一次性计划**：一次性计划仅在您指定的日期和时间调用一次目标。

        在**日期和时间**中，以 `YYYY/MM/DD` 格式输入有效的日期。然后，指定 24 小时 `hh:mm` 格式的时间戳。最后，从下拉选项中选择一个时区。
      + **定期计划**：定期计划按照您使用 **cron** 表达式或 rate 表达式指定的速率调用目标。

        选择**基于 Cron 的计划**，使用 **cron** 表达式配置计划。要使用 rate 表达式，请选择**基于 rate 的计划**，并在 **值**中输入一个正数，然后从下拉选项中选择**单位**。

      有关使用 cron 和 rate 表达式的更多信息，请参阅 [日程安排 EventBridge 器中的计划类型](schedule-types.md)。

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

1. 如果您在上一步中选择了**定期计划**，则在**时间范围**部分中，指定时区，也可以设置计划的开始日期和时间以及结束日期和时间。没有开始日期的定期计划将在创建并可用后立即开始。没有结束日期的定期计划将继续无限期地调用其目标。

1. 选择**下一步**。

1. 在**选择目标**页面上，执行以下操作：

   1. 选择**模板化目标**并选择目标 API。在本示例中，我们将选择 **Amazon SQS `SendMessage` **模板化目标。

   1. 在**发送消息**部分，对于 **SQS 队列**，从下拉列表中选择一个现有的 Amazon SQS 队列 ARN，例如 `arn:aws:sqs:us-west-2:123456789012:TestQueue`。要创建新队列，请选择**创建新 SQS 队列**以导航到 Amazon SQS 控制台。队列创建完毕后，返回 EventBridge 调度器控制台并刷新下拉列表。您的新队列 ARN 将显示并可供选择。

   1. 在**目标**中，输入您希望 EventBridge 调度器传送到目标的有效负载。在本示例中，将向目标队列发送以下消息：**Hello, it's EventBridge Scheduler.**

1. 选择**下一步**，然后在**设置*（可选）***页面上，执行以下操作：

1. 

   1. 在**计划状态**部分中，对于**启用计划**，使用开关开启或关闭功能。默认情况下， EventBridge 调度器会启用您的计划。

   1.  在**计划完成后的操作**部分，配置 EventBridge 调度器在计划完成后采取的操作：
      +  如果要自动删除计划，请选择**删除**。对于一次性计划，这种情况发生在计划调用一次目标之后。对于定期计划，这发生在计划的最后一次计划调用之后。有关自动删除的更多信息，请参阅 [计划完成后删除](managing-schedule-delete.md#managing-schedule-automatic-deletion)。
      +  如果您不想让 EventBridge 调度器在计划完成后执行任何操作，请选择**无**或不选择任何值。

   1. 在**重试策略和死信队列 (DLQ)** 部分中，在**重试策略**中，打开**重试**，为计划配置重试策略。配置重试策略后，如果计划未能调用其目标，EventBridge 调度器将重新运行该计划。如果已配置，则必须为计划设置最长保留时间和最大重试次数。

   1. 对于**事件的最长期限 - *可选***，输入 EventBridge 调度器必须保留未处理事件的最长**小时数**和**分钟数**。
**注意**  
最大值为 24 小时。

   1. 对于**最大重试次数**，输入在目标返回错误的情况下，EventBridge 调度器重试计划的最大次数。
**注意**  
 最大值为 185 次重试。

   1. 对于**死信队列 (DLQ)**，请从以下选项中选择：
      + **无**：如果您不想配置 DLQ，请选择此选项。
      + **在我的 AWS 账户中选择一个 Amazon SQS 队列作为 DLQ**：选择此选项，然后从下拉列表中选择一个队列 ARN，使用与您创建计划时相同的 AWS 账户 配置 DLQ。
      + **将其他 AWS 账户中的 Amazon SQS 队列指定为 DLQ**：选择此选项，然后输入配置为 DLQ 的队列的 ARN（如果队列位于另一个 AWS 账户 中）。要使用此选项，您必须为队列输入确切的 ARN。

   1. 要使用客户托管 KMS 密钥加密目标输入，在**加密**部分中，选择**自定义加密设置（高级）**。如果选择此选项，请输入现有的 KMS 密钥 ARN 或选择**创建一个 AWS KMS 密钥**以导航到 AWS KMS 控制台。有关 EventBridge 调度器如何加密静态数据的更多信息，请参阅 [EventBridge 调度器中的静态加密](encryption-rest.md)。

   1. 对于**权限**，选择**使用现有角色**，然后从下拉列表中选择您在[设置](setting-up.md#setting-up-execution-role)过程中创建的角色。您也可以选择**前往 IAM 控制台**来创建新角色。

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

1. 选择**下一步**。

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

1. 选择**创建计划**以完成新计划的创建。您可以在**计划**页面上查看新的和现有的计划列表。在**状态**列下，验证新计划是否**已启用**。

1. 要验证您的计划是否调用了 Amazon SQS 目标，请打开 Amazon SQS 控制台并执行以下操作：

   1. 从**队列**列表中选择目标队列。

   1. 选择**发送和接收消息**。

   1. 在**发送和接收消息**页面的**接收消息**下，选择**轮询消息**以检索您的计划发送到目标队列的测试消息。

## 使用 AWS CLI 创建计划
<a name="getting-started-cli"></a>

以下示例说明如何使用 AWS CLI 命令 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/scheduler/create-schedule.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/scheduler/create-schedule.html) 创建带有模板化的 Amazon SQS 目标的 EventBridge 调度器计划。在下面的命令中，将占位符的值替换为您自己的信息：
+ **--name**：为计划输入一个名称。
+ **RoleArn**：输入要与计划关联的执行角色的 ARN。
+ **Arn**：输入目标的 ARN。在本例中，目标为 Amazon SQS 队列。
+ **Input**：输入 EventBridge 调度器传送到目标队列的消息。

```
$ aws scheduler create-schedule --name sqs-templated-schedule --schedule-expression 'rate(5 minutes)' \
--target '{"RoleArn": "ROLE_ARN", "Arn": "QUEUE_ARN", "Input": "TEST_PAYLOAD" }' \
--flexible-time-window '{ "Mode": "OFF"}'
```

## 使用 EventBridge 调度器开发工具包创建计划
<a name="getting-started-sdk"></a>

在以下示例中，您将使用 EventBridge 调度器开发工具包创建带有模板化 Amazon SQS 目标的 EventBridge 调度器计划。

**Example Python 开发工具包**  

```
import boto3
scheduler = boto3.client('scheduler')

flex_window = { "Mode": "OFF" }

sqs_templated = {
    "RoleArn": "<ROLE_ARN>",
    "Arn": "<QUEUE_ARN>",
    "Input": "Message for scheduleArn: '<aws.scheduler.schedule-arn>', scheduledTime: '<aws.scheduler.scheduled-time>'"
}

scheduler.create_schedule(
    Name="sqs-python-templated",
    ScheduleExpression="rate(5 minutes)",
    Target=sqs_templated,
    FlexibleTimeWindow=flex_window)
```

**Example Java 软件开发工具包**  

```
package com.example;

import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.scheduler.SchedulerClient;
import software.amazon.awssdk.services.scheduler.model.*;


public class MySchedulerApp {

    public static void main(String[] args) {
        
        final SchedulerClient client = SchedulerClient.builder()
                .region(Region.US_WEST_2)
                .build();
        
        Target sqsTarget = Target.builder()
                .roleArn("<ROLE_ARN>")
                .arn("<QUEUE_ARN>")
                .input("Message for scheduleArn: '<aws.scheduler.schedule-arn>', scheduledTime: '<aws.scheduler.scheduled-time>'")
                .build();
        
        CreateScheduleRequest createScheduleRequest = CreateScheduleRequest.builder()
                .name("<SCHEDULE NAME>")
                .scheduleExpression("rate(10 minutes)")
                .target(sqsTarget)
                .flexibleTimeWindow(FlexibleTimeWindow.builder()
                        .mode(FlexibleTimeWindowMode.OFF)
                        .build())
                .build();
                
        client.createSchedule(createScheduleRequest);
        System.out.println("Created schedule with rate expression and an Amazon SQS templated target");
    }
}
```

## 接下来做什么？
<a name="working-with-cli-sdk-whats-next"></a>
+  有关使用控制台、AWS CLI 或 EventBridge 调度器开发工具包管理计划的更多信息，请参阅 [在日程安排器中管理日程 EventBridge 安排](managing-schedule.md)。
+  有关如何配置模板化目标和了解如何使用通用目标参数的更多信息，请参阅 [在 EventBridge 调度器中管理目标](managing-targets.md)。
+  有关 EventBridge 调度器数据类型和 API 操作的更多信息，请参阅 [EventBridge 调度器 API 参考](https://docs.aws.amazon.com/scheduler/latest/APIReference/)。