スケジュールに従って実行する Amazon EventBridge ルールの作成
ルールは、イベントに対応して実行したり、一定の時間間隔で実行したりすることができます。例えば、AWS Lambda 関数を定期的に実行するには、スケジュールに従って実行するルールを作成します。スケジュールに従って実行するルールは、cron または rate 式を使用して作成できます。スケジュールされたイベントはすべて UTC+0 のタイムゾーンを使用し、スケジュールの最小精度は 1 分です。スケジュールされたルールは、その分のうちに実行されますが、正確に 0 秒に実行されるわけではありません。
Eventbridge は、cron 式と rate 式をサポートしています。rate 式は定義が簡単で、cron 式は詳細なスケジュール制御を提供します。例えば、cron 式を使用すると、毎週、または毎月の特定の日の指定した時刻に実行されるルールを定義できます。それに対して、rate 式では、1 時間に 1 回または 1 日 1 回など、一定の期間でルールを実行します。
注記
EventBridge では、Amazon EventBridge スケジューラという新しいスケジューリング機能が提供されるようになりました。EventBridge スケジューラはサーバーレススケジューラで、一元化されたマネージドサービスからタスクを作成、実行、管理できます。EventBridge スケジューラは高度にカスタマイズ可能で、EventBridge のスケジュールルールよりもスケーラビリティが高く、ターゲット API 操作と AWS サービスの範囲が広がります。
スケジュールに従ってターゲットを呼び出すには、EventBridge スケジューラを使用することをお勧めします。詳細については、『Amazon EventBridge スケジューラユーザーガイド』を参照してください。
次のビデオでは、タスクのスケジューリングの概要を示します。
注記
Eventbridge のスケジュール式は、秒レベルの精度ではありません。cron 式を使用した最小の粒度は 1 分です。EventBridge とターゲットサービスは分散しているため、スケジュールされたルールがトリガーされてからターゲットサービスがターゲットリソースを実行するまでの間に数秒の遅延が発生することもあります。
cron 式
Cron 式には 6 つの必須フィールドがあり、それらは空白で区切られます。
[Syntax] (構文)
cron(fields)
フィールド | 値 | ワイルドカード |
---|---|---|
分 |
0-59 |
, - * / |
時間 |
0-23 |
, - * / |
日 |
1-31 |
, - * ? / L W |
月 |
1-12 または JAN-DEC |
, - * / |
曜日 |
1-7 または SUN-SAT |
, - * ? L # |
年 |
1970-2199 |
, - * / |
ワイルドカード
-
[,] (カンマ) のワイルドカードには、追加の値が含まれます。月フィールドの、「JAN,FEB,MAR」は、1 月、2 月、3 月を含みます。
-
[-] (ダッシュ) のワイルドカードは、範囲を指定します。日フィールドの「1-15」は、指定した月の 1 日から 15 日を含みます。
-
[*] (アスタリスク) のワイルドカードには、フィールドのすべての値が含まれます。[時間] フィールドの * には すべての時間が含まれます。[*] を日および曜日フィールドの両方に使用することはできません。一方に使用する場合は、もう一方に [?] を使用する必要があります。
-
[/] (スラッシュ) ワイルドカードで増分を指定します。分フィールドで、「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 フィールドの # ワイルドカードは、月の指定された曜日の特定のインスタンスを指定します。たとえば、3#2 は、月の第 2 火曜日を示します。3 は週の 3 番目の日 (火曜日) を示し、2 は月のそのタイプの 2 番目の日を示します。
注記
「#」文字を使用する場合、曜日フィールドには 1 つの式しか定義できません。例えば、
"3#1,6#3"
は 2 つの式として解釈されるため、無効です。
制約事項
-
cron 式の日フィールドと曜日フィールドを同時に指定することはできません。一方のフィールドに値または * (アスタリスク) を指定する場合、もう一方のフィールドで ? (疑問符) を使用する必要があります。
-
1 分より短い間隔を導き出す cron 式はサポートされていません。
例
スケジュールに基づいたルールを作成するときは、以下のサンプルの cron 文字列を使用できます。
分 | 時間 | 日 | 月 | 曜日 | 年 | 意味 |
---|---|---|---|---|---|---|
0 |
10 |
* |
* |
? |
* |
毎日午前 10:00 (UTC+0) に実行 |
15 |
12 |
* |
* |
? |
* |
毎日午後 12:15 (UTC+0) に実行 |
0 |
18 |
? |
* |
MON-FRI |
* |
毎週月曜日から金曜日まで午後 6:00 (UTC+0) に実行 |
0 |
8 |
1 |
* |
? |
* |
毎月 1 日の午前 8:00 (UTC+0) に実行 |
0/15 |
* |
* |
* |
? |
* |
15 分ごとに実行 |
0/10 |
* |
? |
* |
MON-FRI |
* |
月曜日から金曜日まで 10 分ごとに実行 |
0/5 |
8-17 |
? |
* |
MON-FRI |
* |
月曜日から金曜日まで午前 8:00 から午後 5:55 (UTC+0) の間に 5 分ごとに実行 |
0/30 |
20-2 |
? |
* |
MON-FRI |
* |
月曜日から金曜日まで開始日の午後10時から翌日の午前2時 (UTC) の間、30分間隔で実行 月曜日の午前 12 時から午前 2 時 (UTC) まで実行します。 |
次の例では、毎日午後 12:00 (UTC+0) に実行されるルールを作成します。
aws events put-rule --schedule-expression "cron(0 12 * * ? *)" --name
MyRule1
次の例では、毎日午前 2:05 と 午後2:35 (UTC+0) に実行されるルールを作成します。
aws events put-rule --schedule-expression "cron(5,35 14 * * ? *)" --name
MyRule2
次の例では、2019~2022 年の毎月最後の金曜日の午前 10:15 (UTC++0) に実行されるルールを作成します。
aws events put-rule --schedule-expression "cron(15 10 ? * 6L 2019-2022)" --name
MyRule3
rate 式
rate 式は、予定されたイベントルールを作成すると開始され、その定義済みのスケジュールに基づいて実行されます。
rate 式には 2 つの必須フィールドがあり、空白で区切られます。
[Syntax] (構文)
rate(value unit)
- 値
-
正数。
- 単位
-
時刻の単位。値 1 には、
minute
などさまざまな単位が必要です。また、1 を超える値にはminutes
などの単位が必要です。有効な値: minute | minutes | hour | hours | day | days
制約事項
値が 1 に等しい場合、単位は単数形であることが必要です。値が 1 より大きい場合、単位は複数であることが必要です。たとえば、rate(1 hours) と rate(5 hour) は有効ではありませんが、rate(1 hour) と rate(5 hours) は有効です。
例
次の例に示しているのは、AWS CLI put-rule
コマンドで rate 式を使用する方法です。最初の例では、ルールを毎分起動し、次の例は 5 分ごとにルールを起動し、3 番目の例は 1 時間に 1 回ルールを起動し、最後の例は 1 日に 1 回ルールを起動します。
aws events put-rule --schedule-expression "rate(1 minute)" --name
MyRule2
aws events put-rule --schedule-expression "rate(5 minutes)" --name
MyRule3
aws events put-rule --schedule-expression "rate(1 hour)" --name
MyRule4
aws events put-rule --schedule-expression "rate(1 day)" --name
MyRule5
ルールの作成
次の手順では、定期的なスケジュールに従ってトリガーされる Eventbridge ルールを段階的に作成します。
注記
スケジュールされたルールは、デフォルトのイベントバスを使用してのみ作成できます。
定期的なスケジュールに従って実行するルールを作成するには
Amazon EventBridge コンソール (https://console.aws.amazon.com/events/
) を開きます。 -
ナビゲーションペインで [Rules] (ルール) を選択します。
-
[Create rule] (ルールの作成) を選択します。
-
ルールの名前と説明を入力します。
ルールには、同じリージョン内および同じイベントバス上の別のルールと同じ名前を付けることはできません。
-
[Event bus] (イベントバス) では、このルールに関連付けるイベントバスを選択します。このルールをアカウントからのイベントと一致させるには、AWSデフォルトのイベントバスを選択します。アカウントの AWS サービスがイベントを発行すると、常にアカウントのデフォルトのイベントバスに移動します。
-
[Rule type] (ルールタイプ) では、[Schedule] (スケジュール) を選択します。
-
[Next] (次へ) をクリックします。
-
[Schedule pattern] (スケジュールパターン) では、次のいずれかを実行します。
-
Cron 式を使用してスケジュールを定義するには、午前 8 時など、特定の時間に実行されるきめ細かいスケジュールを選択します。毎月最初の月曜日の PST に、cron 式を入力します。
-
Rate 式を使用してスケジュールを定義するには、10 分ごとなど、通常レートで実行されるスケジュールを選択し、Rate 式を入力します。
-
-
[Next] (次へ) をクリックします。
-
[Target types] (ターゲットタイプ) では、AWS[services] (サービス) を選択します。
-
[Select a target] (ターゲットの選択) では、EventBridge がイベントパターンに一致するイベントを検出した際に情報を送信する AWS サービスを選択します。
-
表示されるフィールドは、選択したサービスによって異なります。必要に応じて、このターゲットタイプに固有の情報を入力します。
-
多くのターゲットタイプでは、EventBridge はターゲットにイベントを送信するためのアクセス許可が必要です。これらの場合、EventBridge は、イベントの実行に必要な IAM ロールを作成できます。次のいずれかを実行します。
-
自動的に IAM ロールを作成するには、[この特定のリソースに対して新しいロールを作成する] を選択します。
-
以前に作成した IAM ロールを使用するには、[Use existing role] (既存のロールの使用) をクリックし、ドロップダウンリストから既存のロールを選択します。
-
-
(オプション) [Additional settings] (追加設定) では、以下を実行します。
-
[Maximum age of event] (最大イベント有効期間) に、1 分 (00:01) から 24 時間 (24:00) の間の値を入力します。
-
Retry attempts(再試行) で、0~185 の数値を入力します。
-
Dead-letter queue(デッドレターキュー) で、標準 Amazon SQS キューをデッドレターキューとして使用するかどうかを選択します。EventBridge は、このルールに一致するイベントがターゲットに正常に配信されなかった場合に、そのイベントをデッドレターキューに送信します。次のいずれかを実行します。
-
デッドレターキューを使用しない場合は、None(なし) を選択します。
-
Select an Amazon SQS queue in the current AWS account to use as the dead-letter queue(デッドレターキューとして使用する現在の アカウントの Amazon SQS キューを選択) を選択し、ドロップダウンリストから使用するキューを選択します。
-
Select an Amazon SQS queue in an other AWS account as a dead-letter queue(他の アカウントの Amazon SQS キューをデッドレターキューとして選択) を選択し、使用するキューの ARN を入力します。キューにメッセージを送信するための EventBridge 許可を付与するリソースベースのポリシーをそのキューにアタッチする必要があります。詳細については、「デッドレターキューへのアクセス許可の付与」を参照してください。
-
-
-
(オプション) [Add another target] (別のターゲットを追加) を選択して、このルールに別のターゲットを追加します。
-
[Next] (次へ) をクリックします。
-
(オプション) ルールに 1 つ以上のタグを入力します。詳細については、「Amazon EventBridge のタグ」を参照してください。
-
[Next] (次へ) をクリックします。
-
ルールの詳細を確認し、[Create rule] (ルールの作成) を選択します。