スケジュールに従って実行する Amazon EventBridge ルールの作成 - Amazon EventBridge

スケジュールに従って実行する 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 ルールを段階的に作成します。

注記

スケジュールされたルールは、デフォルトのイベントバスを使用してのみ作成できます。

定期的なスケジュールに従って実行するルールを作成するには
  1. Amazon EventBridge コンソール (https://console.aws.amazon.com/events/) を開きます。

  2. ナビゲーションペインで [Rules] (ルール) を選択します。

  3. [‬Create rule]‭ (ルールの作成) を選択します。

  4. ルールの名前と説明を入力します。

    ルールには、同じリージョン内および同じイベントバス上の別のルールと同じ名前を付けることはできません。

  5. [Event bus] (イベントバス) では、このルールに関連付けるイベントバスを選択します。このルールをアカウントからのイベントと一致させるには、AWSデフォルトのイベントバスを選択します。アカウントの AWS サービスがイベントを発行すると、常にアカウントのデフォルトのイベントバスに移動します。

  6. [Rule type] (ルールタイプ) では、[Schedule] (スケジュール) を選択します。

  7. [Next] (次へ) をクリックします。

  8. [Schedule pattern] (スケジュールパターン) では、次のいずれかを実行します。

    • Cron 式を使用してスケジュールを定義するには、午前 8 時など、特定の時間に実行されるきめ細かいスケジュールを選択します。毎月最初の月曜日の PST に、cron 式を入力します。

    • Rate 式を使用してスケジュールを定義するには、10 分ごとなど、通常レートで実行されるスケジュールを選択し、Rate 式を入力します。

  9. [Next] (次へ) をクリックします。

  10. [Target types] (ターゲットタイプ) では、AWS[services] (サービス) を選択します。

  11. [Select a target] (ターゲットの選択) では、EventBridge がイベントパターンに一致するイベントを検出した際に情報を送信する AWS サービスを選択します。

  12. 表示されるフィールドは、選択したサービスによって異なります。必要に応じて、このターゲットタイプに固有の情報を入力します。

  13. 多くのターゲットタイプでは、EventBridge はターゲットにイベントを送信するためのアクセス許可が必要です。これらの場合、EventBridge は、イベントの実行に必要な IAM ロールを作成できます。次のいずれかを実行します。

    • 自動的に IAM ロールを作成するには、[この特定のリソースに対して新しいロールを作成する] を選択します。

    • 以前に作成した IAM ロールを使用するには、[Use existing role] (既存のロールの使用) をクリックし、ドロップダウンリストから既存のロールを選択します。

  14. (オプション) [Additional settings] (追加設定) では、以下を実行します。

    1. [Maximum age of event] (最大イベント有効期間) に、1 分 (00:01) から 24 時間 (24:00) の間の値を入力します。

    2. Retry attempts(再試行) で、0~185 の数値を入力します。

    3. 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 許可を付与するリソースベースのポリシーをそのキューにアタッチする必要があります。詳細については、「デッドレターキューへのアクセス許可の付与」を参照してください。

  15. (オプション) [Add another target] (別のターゲットを追加) を選択して、このルールに別のターゲットを追加します。

  16. [Next] (次へ) をクリックします。

  17. (オプション) ルールに 1 つ以上のタグを入力します。詳細については、「Amazon EventBridge のタグ」を参照してください。

  18. [Next] (次へ) をクリックします。

  19. ルールの詳細を確認し、[Create rule] (ルールの作成) を選択します。