

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# EventBridge スケジューラのスケジュールタイプ
<a name="schedule-types"></a>

 以下のトピックでは、Amazon EventBridge スケジューラがサポートするさまざまなスケジュールタイプと、EventBridge スケジューラが夏時間やさまざまなタイムゾーンでのスケジューリングを管理する方法について説明します。スケジュールを設定する際には、レートベース、cron ベース、および 1 回限りのスケジュールの 3 つのスケジュールタイプから選択できます。

 レートベースのスケジュールと cron ベースのスケジュールはどちらも繰り返しのスケジュールです。設定するスケジュールのタイプに対応するスケジュール式を使用し、EventBridge スケジューラが式を評価するタイムゾーンを指定して、繰り返しのスケジュールタイプをそれぞれ設定します。

 1 回限りのスケジュールは、ターゲットを 1 回だけ呼び出すスケジュールです。1 回限りのスケジュールを設定するには、EventBridge スケジューラがスケジュールを評価する時刻、日付、およびタイムゾーンを指定します。

**注記**  
 EventBridge スケジューラのすべてのスケジュールタイプは、60 秒の精度でターゲットを呼び出します。つまり、`1:00` にスケジュールを実行するように設定すると、柔軟な時間枠を設定していない限り、ターゲット API は `1:00:00` と `1:00:59` の間に呼び出されます。

 以下のセクションでは、繰り返しのスケジュールタイプごとにスケジュール式を設定する方法と、EventBridge スケジューラで 1 回限りのスケジュールを設定する方法について説明します。

**Topics**
+ [レートベースのスケジュール](#rate-based)
+ [Cron ベースのスケジュール](#cron-based)
+ [1 回限りのスケジュール](#one-time)
+ [EventBridge スケジューラのタイムゾーン](#time-zones)
+ [EventBridge スケジューラの夏時間](#daylist-savings-time)

## レートベースのスケジュール
<a name="rate-based"></a>

 レートベースのスケジュールは、スケジュールに指定した開始日の後に開始され、スケジュールの終了日までユーザーが定義した標準レートで実行されます。一般的な繰り返しのスケジュールのユースケースのほとんどは、レートベースのスケジュールを使用して設定できます。たとえば、15 分ごと、2 時間に 1 回、または 5 日に 1 回ターゲットを呼び出すスケジュールが必要な場合は、レートベースのスケジュールを使用してこれを達成できます。レートベースのスケジュールは、rate 式を使用して設定します。

 レートベースのスケジュールでは、[https://docs.aws.amazon.com/scheduler/latest/APIReference/API_CreateSchedule.html#scheduler-CreateSchedule-request-StartDate](https://docs.aws.amazon.com/scheduler/latest/APIReference/API_CreateSchedule.html#scheduler-CreateSchedule-request-StartDate) プロパティを使用してスケジュールが最初に出現する日を設定します。レートベースのスケジュールに `StartDate` を指定しない場合、スケジュールはただちにターゲットを呼び出します。

 rate 式には次のように 2 つの必須フィールドがあり、空白で区切られます。

### 構文
<a name="rate-based-syntax"></a>

```
rate(value unit)
```

値  
 正数。

単位  
 スケジュールでターゲットを呼び出す時間単位。  
 有効な入力: `minutes` \$1 `hours` \$1 `days` 

### 例
<a name="rate-based-examples"></a>

 次の例は、 コマンドで AWS CLI `create-schedule` rate 式を使用してレートベースのスケジュールを設定する方法を示しています。この例では、5 分ごとに実行されるスケジュールを作成し、テンプレート化された `SqsParameters` ターゲットタイプを使用して Amazon SQS キューにメッセージを配信します。

 この例では `--start-date` パラメータの値を設定していないため、スケジュールを作成してアクティブ化した直後に、ターゲットの呼び出しが開始されます。

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

## Cron ベースのスケジュール
<a name="cron-based"></a>

 cron 式は、指定した日時に実行されるきめ細かい繰り返しのスケジュールを作成します。EventBridge スケジューラは、協定世界時 (UTC) またはスケジュール作成時に指定したタイムゾーンでの cron ベースのスケジュール設定をサポートしています。cron ベースのスケジュールでは、スケジュールを実行するタイミングと頻度をより細かく制御できます。EventBridge スケジューラの rate 式ではサポートされていないカスタマイズされた繰り返しのスケジュールが必要な場合は、cron ベースのスケジュールを使用してください。例えば、毎月第 1 月曜日の午前 8 時 (PST) に実行する cron ベースのスケジュールを作成できます。cron ベースのスケジュールは、*cron 式*を使用して設定します。

 cron 式は、次に示すように、空白で区切られた 5 つの必須フィールド (分、時間、日、月、曜日) と 1 つのオプションフィールド (年) で構成されます。

### 構文
<a name="cron-based-syntax"></a>

```
cron(minutes hours day-of-month month day-of-week year)
```


| **フィールド** | **値** | **ワイルドカード** | 
| --- | --- | --- | 
|  分  |  0-59  |  , - \$1 /  | 
|  時間  |  0-23  |  , - \$1 /  | 
|  日  |  1-31  |  , - \$1 ? / L W  | 
|  月  |  1-12 または JAN-DEC  |  , - \$1 /  | 
|  曜日  |  1-7 または SUN-SAT  |  , - \$1 ? L \$1  | 
|  年  |  1970-2199  |  , - \$1 /  | 

**ワイルドカード**
+ **,** (カンマ) のワイルドカードには、追加の値が含まれます。月フィールドの、「JAN,FEB,MAR」は、1 月、2 月、3 月を含みます。
+ **-** (ダッシュ) のワイルドカードは、範囲を指定します。日フィールドの「1-15」は、指定した月の 1 日から 15 日を含みます。
+ **[\$1]** (アスタリスク) のワイルドカードには、フィールドのすべての値が含まれます。[時間] フィールドの **\$1** には すべての時間が含まれます。[**\$1**] を日および曜日フィールドの両方に使用することはできません。一方に使用する場合は、もう一方に [**?**] を使用する必要があります。
+ [**/**] (スラッシュ) ワイルドカードで増分を指定します。分フィールドで、「1/10」と入力して、その時間の最初の分から始めて、10 分毎を指定できます (11 分、21 分、31 分など)。
+ **?** (疑問符) ワイルドカードは任意を意味します。[日] フィールドに **7** と入力し、何曜日であってもかまわない場合、[曜日] フィールドに **?** を入力できます。
+ Day-of-month フィールドまたは Day-of-week フィールドの、ワイルドカード **L** は月または週の最終日を指定します。
+ Day-of-month フィールドのワイルドカード **W** は、平日を指定します。Day-of-month フィールドで、**3W** は月の 3 日目に最も近い平日を指定します。
+ Day-of-week フィールドの **\$1** ワイルドカードは、月の指定された曜日の特定のインスタンスを指定します。例えば、3\$12 は、月の第 2 火曜日を示します。3 は週の 3 番目の日 (火曜日) を示し、2 は月のそのタイプの 2 番目の日を示します。
**注記**  
「\$1」文字を使用する場合、曜日フィールドには 1 つの式しか定義できません。例えば、`"3#1,6#3"` は 2 つの式として解釈されるため、無効です。

### 例
<a name="cron-based-example"></a>

 次の例は、 コマンドで AWS CLI `create-schedule` cron 式を使用して cron ベースのスケジュールを設定する方法を示しています。この例では、2022 ～ 2023 年の各月の最終金曜日の午前 10 時 15 分 (UTC\$10) に実行されるスケジュールを作成し、テンプレート化された `SqsParameters` ターゲットタイプを使用して Amazon SQS キューにメッセージを配信します。

```
$ aws scheduler create-schedule --schedule-expression "cron(15 10 ? * 6L 2022-2023)" --name schedule-name \
--target '{"RoleArn": "role-arn", "Arn": "QUEUE_ARN", "Input": "TEST_PAYLOAD" }' \
--flexible-time-window '{ "Mode": "OFF"}'
```

## 1 回限りのスケジュール
<a name="one-time"></a>

 1 回限りのスケジュールは、有効な日付とタイムスタンプを使用して指定した日時に 1 回だけターゲットを呼び出します。EventBridge スケジューラは、協定世界時 (UTC) またはスケジュール作成時に指定したタイムゾーンでのスケジュール設定をサポートしています。

**注記**  
 1 回限りのスケジュールは、ターゲットの実行と呼び出しが完了した*後も*、アカウントクォータに対してカウントされます。1 回限りのスケジュールは、実行が完了した後に[削除](managing-schedule-delete.md)することをおすすめします。

 1 回限りのスケジュールは at 式を使用して設定します。at 式は、以下に示すように、EventBridge スケジューラでスケジュールを呼び出したい日付と時刻で構成されます。

### 構文
<a name="one-time-syntax"></a>

```
at(yyyy-mm-ddThh:mm:ss)
```

 1 回限りのスケジュールを設定すると、EventBridge スケジューラはスケジュールに指定された `StartDate` と `EndDate` を無視します。

### 例
<a name="one-time-example"></a>

 次の例は、 コマンドを使用して AWS CLI `create-schedule` 式で を使用して 1 回限りのスケジュールを設定する方法を示しています。この例では、2022 年 11 月 20 日の午後 1 時 (UTC-8) に実行されるスケジュールを作成し、テンプレート化された `SqsParameters` ターゲットタイプを使用して Amazon SQS キューにメッセージを配信します。

```
$ aws scheduler create-schedule --schedule-expression "at(2022-11-20T13:00:00)" --name schedule-name \
--target '{"RoleArn": "role-arn", "Arn": "QUEUE_ARN", "Input": "TEST_PAYLOAD" }' \
--schedule-expression-timezone "America/Los_Angeles"
--flexible-time-window '{ "Mode": "OFF"}'
```

## EventBridge スケジューラのタイムゾーン
<a name="time-zones"></a>

 EventBridge スケジューラでは、指定したタイムゾーンで cron ベースのスケジュールと 1 回限りのスケジュールを設定できます。EventBridge スケジューラは、Internet Assigned Numbers Authority (IANA) が管理する[タイムゾーンデータベース](https://www.iana.org/time-zones)を使用します。

 では AWS CLI、 `--schedule-expression-timezone`パラメータを使用して EventBridge スケジューラでスケジュールを評価するタイムゾーンを設定できます。例えば、次のコマンドは、毎日午前 8 時 30 分に**アメリカ/ニューヨーク**でテンプレート化された Amazon SQS `SendMessage` ターゲットを呼び出す cron ベースのスケジュールを作成します。

```
$ aws scheduler create-schedule --schedule-expression "cron(30 8 * * ? *)" --name schedule-in-est \
    --target '{"RoleArn": "role-arn", "Arn": "QUEUE_ARN", "Input": "This schedule runs in the America/New_York time zone." }' \
    --schedule-expression-timezone "America/New_York"
    --flexible-time-window '{ "Mode": "OFF"}'
```

## EventBridge スケジューラの夏時間
<a name="daylist-savings-time"></a>

 EventBridge スケジューラは、夏時間に合わせてスケジュールを自動的に調整します。春に時間が進むときに、cron 式が存在しない日時に該当すると、スケジュールの呼び出しはスキップされます。秋に時間が戻ったとき、スケジュールは 1 回だけ実行され、その呼び出しは繰り返されません。次の呼び出しは、通常、指定された日時に行われます。

 EventBridge スケジューラは、スケジュールを作成するときに指定したタイムゾーンに応じてスケジュールを調整します。**アメリカ/ニューヨーク**でスケジュールを設定した場合、そのタイムゾーンの時刻が変更されるとスケジュールが調整されます。一方、**アメリカ/ロサンゼルス**のスケジュールは、西海岸で時刻が変更されると 3 時間後に調整されます。

 `rate(1 days)` など、単位として `days` を使用するレートベースのスケジュールの場合、`days` は時計上の 24 時間を表します。つまり、夏時間によって 1 日が 23 時間に短縮されたり、25 時間に延長されたりしても、EventBridge スケジューラはスケジュールが最後に呼び出されてから 24 時間後に rate 式を評価します。

**注記**  
 地域の規則や規制により、一部のタイムゾーンでは夏時間が適用されません。夏時間に対応していないタイムゾーンでスケジュールを作成した場合、EventBridge スケジューラはスケジュールを調整しません。夏時間の調整は、協定世界時 (UTC) のスケジュールには適用されません。

**例**

 **アメリカ/ロサンゼルス**で次の cron 式を使用してスケジュールを作成するシナリオを考えてみましょう: `cron(30 2 * * ? *)` このスケジュールは、指定されたタイムゾーンで毎日午前 2 時 30 分に実行されます。
+  **スプリングフォワード** — 春に午前 1 時 59 分から午前 3 時に時間が進むと、EventBridge スケジューラはその日のスケジュール呼び出しをスキップし、翌日には通常どおりスケジュールの実行を再開します。
+  **フォールバック** — 秋に午前 2 時 59 分から午前 2 時に時間が戻ると、EventBridge スケジューラは時間が戻る前の午前 2 時 30 分に 1 回だけスケジュールを実行しますが、時間が変わった後の午前 2 時 30 分にはスケジュールの呼び出しを繰り返しません。