スケジュールに従って実行する Amazon EventBridge ルールの作成
ルールは、イベントに応じて実行したり、一定の時間間隔で実行したりすることができます。例えば、AWS Lambda 関数を定期的に実行するには、スケジュールに従って実行するルールを作成します。
EventBridge は、Amazon EventBridge スケジューラを提供しています。これはサーバーレススケジューラで、一元化されたマネージドサービスからタスクを作成、実行、管理できます。EventBridge スケジューラは高度にカスタマイズ可能で、EventBridge のスケジュールルールよりもスケーラビリティが高く、ターゲット API 操作と AWS サービスの範囲が広がります。
スケジュールに従ってターゲットを呼び出すには、EventBridge スケジューラを使用することをお勧めします。詳細については、「Amazon EventBridge での Amazon EventBridge スケジューラの使用」を参照してください。
EventBridge では、次の 2 種類のスケジュールされたルールを作成できます。
-
一定の間隔で実行するルール
EventBridge は、これらのルールを定期的に (20 分間隔など) に実行します。
スケジュールされたルールのレートを指定するには、rate 式を定義します。
-
特定の時間に実行するルール
EventBridge は、これらのルールを特定の日時 (毎月第一月曜日の 太平洋標準時午前 8:00 時など)
スケジュールされたルールを実行する時刻と日付を指定するには、cron 式を定義します。
rate 式は定義がより簡単であり、cron 式はスケジュールを詳細に制御します。例えば、cron 式を使用すると、毎週、または毎月の特定の日の指定した時刻に実行されるルールを定義できます。それに対して、rate 式では、1 時間に 1 回または 1 日 1 回など、一定の間隔でルールを実行します。
スケジュールされたイベントはすべて UTC+0 のタイムゾーンを使用し、スケジュールの最小精度は 1 分です。
Eventbridge のスケジュール式は、秒レベルの精度ではありません。cron 式を使用した最小の粒度は 1 分です。EventBridge とターゲットサービスは分散しているため、スケジュールされたルールがトリガーされてからターゲットサービスがターゲットリソースを実行するまでの間に数秒の遅延が発生することもあります。
次のビデオでは、タスクのスケジューリングの概要を示します。
定期的に実行するルールの作成
次の手順では、定期的に実行する Eventbridge ルールを作成する方法を示します。
スケジュールされたルールは、デフォルトのイベントバスを使用してのみ作成できます。
ルールを定義する
まず、ルールを識別するため、ルールの名前と説明を入力します。
ルールの詳細を定義するには
Amazon EventBridge コンソール (https://console.aws.amazon.com/events/) を開きます。
-
ナビゲーションペインで [Rules] (ルール) を選択します。
-
[Create rule] (ルールの作成) を選択します。
-
ルールの名前を入力し、オプションで説明を入力します。
ルールには、同じ AWS リージョン 内および同じイベントバス上の別のルールと同じ名前を付けることはできません。
-
[イベントバス] で、デフォルトのイベントバスを選択します。スケジュールされたルールは、デフォルトのイベントバスを使用してのみ作成できます。
ルールを作成してすぐに有効にするには、[選択したイベントバスでルールを有効にする] オプションをオンにします。
-
[Rule type] (ルールタイプ) では、[Schedule] (スケジュール) を選択します。
この時点で、定期的に実行するルールの作成を続けるか、Amazon EventBridge スケジューラを使用するかを選択できます。
-
続行する方法を選択します。
スケジュールを定義する
次に、スケジュールパターンを定義します。
スケジュールパターンを定義するには
-
[スケジュールパターン] で、スケジュールを特定の時間に実行するか、一定の間隔で実行するかを選択します。
- Specific time
-
毎月第一月曜日の太平洋標準日午前 8:00 など、特定の時間に実行するきめ細かいスケジュールを選択します。
[cron 式] で、EventBridge がこのスケジュールされたルールをいつ実行するかを決めるために使用する cron 式を定義するフィールドを指定します。
すべてのフィールドを指定すると、EventBridge はこのスケジュールされたルールを実行する以降の 10 個の日付を表示します。これらの日付を UTC で表示するか、ローカルタイムゾーンで表示するかを選択できます。
cron 式の作成の詳細については、「cron 式のリファレンス」を参照してください。
- Regular rate
-
一定の間隔 (10 分ごとなど) で実行するスケジュールを選択します。
[rate 式] で、[値] フィールドと [単位] フィールドを指定し、EventBridge がこのスケジュールされたルールを実行するレートを定義します。
rate 式の作成の詳細については、「rate 式のリファレンス」を参照してください。
-
[Next] (次へ) をクリックします。
ターゲットを選択する
指定されたパターンに一致するイベントを受信するターゲットを 1 つまたは複数選択します。ターゲットには、EventBridge のイベントバス、Salesforce などの SaaS パートナーを含む EventBridge API 送信先、または別の AWS のサービス を含めることができます。
ターゲットを選択するには
-
[ターゲットタイプ] で、以下のいずれかのターゲットタイプを選択します。
- Event bus
-
EventBridge イベントバスを選択するには、[EventBridge event bus] (EventBridge イベントバス) を選択してから、次の操作を行います。
- API destination
-
EventBridge API 送信先を使用するには、[EventBridge API の宛先] を選択し、次のいずれかの操作を行います。
-
既存の API 送信先を使用するには、[Use an existing API destination] (既存の API 送信先を使用する) を選択します。次に、ドロップダウンリストから API 送信先を選択します。
-
新しい API 送信先を作成するには、[Create a new API destination] (新しい API 送信先を作成する) を選択します。次に、送信先について次の詳細を指定します。
-
[Name] (名前) に、イベント送信先の名前を入力します。
ロール名は AWS アカウント 内で一意である必要があります。文字列は 64 文字まで設定できます。有効な文字は、A-Z、a-z、0-9、および ._- (ハイフン) です。
-
(オプション) [Description (説明) に、アクションの簡潔な説明を入力します。
説明の長さは、最大 512 文字です。
-
[API destination endpoint] (API 送信先エンドポイント) — ターゲットの URL エンドポイント。
エンドポイント URL は https
で始まる必要があります。*
をパスパラメータワイルドカードとして含めることができます。ターゲットの HttpParameters
属性からパスパラメータを設定できます。
-
[HTTP method] (HTTP メソッド) — エンドポイントを呼び出すときに使用する HTTP メソッドを選択します。
-
(オプション) [Invocation rate limit per second] (1 秒あたりの呼び出しレート制限) — この送信先で 1 秒あたりに受け入れられる呼び出しの最大数を入力します。
この値はゼロより大きくなければなりません。デフォルトでは、この値は 300 に設定されます。
-
[接続] — 新しい接続を使用するか既存の接続を使用するかを選択します。
既存の接続を使用するには、[既存の接続を使用] を選択し、ドロップダウンリストから接続を選択します。
この送信先に新しい接続を作成するには、[Create a new connection] (新しい接続を作成する) を選択し、その接続の [Name] (名前)、[Destination type] (送信先タイプ)、および[Authorization type] (認証タイプ) を定義します。この接続にオプションの [Description] (説明) を追加することもできます。
詳細については、「API 送信先」を参照してください。
- AWS のサービス
-
AWS のサービス を使用するには、AWS のサービス を選択し、次の操作を行います。
-
[Select a target] (ターゲットの選択) で、ターゲットとして使用する AWS のサービス を選択します。選択したサービスにリクエストされた情報を入力します。
-
多くのターゲットタイプでは、EventBridge はターゲットにイベントを送信するためのアクセス許可が必要です。これらの場合、EventBridge は、イベントの実行に必要な IAM ロールを作成できます。
[Execution role] (実行ロール) では、次のいずれかを実行します。
-
このルールの新しい実行ロールを作成するには:
[この特定のリソースについて新しいロールを作成] を選択します。
この実行ロールの名前を入力するか、EventBridge によって生成された名前を使用します。
-
このルールに既存の実行ロールを使用するには:
[既存のロールを使用] を選択します。
使用する実行ロールの名前を入力するか、ドロップダウンリストから選択します。
-
(オプション) [追加設定] には、ターゲットタイプで使用できるオプション設定のいずれかを指定します。
- Event bus
-
(オプション) [デッドレターキュー] で、標準 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 許可を付与するリソースベースのポリシーをそのキューにアタッチする必要があります。
詳細については、「デッドレターキューへのアクセス許可の付与」を参照してください。
- API destination
-
-
(オプション) [ターゲット入力を設定] で、一致するイベントに対してターゲットに送信されるテキストをカスタマイズする方法を選択します。次のいずれかを選択します。
-
一致したイベント — EventBridge は元のソースイベント全体をターゲットに送信します。これがデフォルトです。
-
一致したイベントの一部 — EventBridge は、元のソースイベントの指定された部分のみをターゲットに送信します。
[一致したイベントの一部を指定] で、EventBridge からターゲットに送信するイベント部分を定義する JSON パスを指定します。
-
定数 (JSON テキスト) — EventBridge は指定された JSON テキストのみをターゲットに送信します。元のソースイベントは、いずれの部分も送信されません。
[JSON で定数を指定] で、EventBridge がイベントの代わりにターゲットに送信する JSON テキストを指定します。
-
入力トランスフォーマー — EventBridge からターゲットに送信するテキストをカスタマイズするように入力トランスフォーマーを設定します。詳細については、「Amazon EventBridge 入力変換」を参照してください。
-
(オプション) [再試行ポリシー] で、エラーが発生した後に EventBridge がターゲットへのイベント送信を再試行する方法を指定します。
-
(オプション) [デッドレターキュー] で、標準 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 許可を付与するリソースベースのポリシーをそのキューにアタッチする必要があります。
詳細については、「デッドレターキューへのアクセス許可の付与」を参照してください。
- AWS service
-
特定の AWS のサービスに対しては、以下のフィールドがすべて表示されない場合があることに注意してください。
-
(オプション) [ターゲット入力を設定] で、一致するイベントに対してターゲットに送信されるテキストをカスタマイズする方法を選択します。次のいずれかを選択します。
-
一致したイベント — EventBridge は元のソースイベント全体をターゲットに送信します。これがデフォルトです。
-
一致したイベントの一部 — EventBridge は、元のソースイベントの指定された部分のみをターゲットに送信します。
[一致したイベントの一部を指定] で、EventBridge からターゲットに送信するイベント部分を定義する JSON パスを指定します。
-
定数 (JSON テキスト) — EventBridge は指定された JSON テキストのみをターゲットに送信します。元のソースイベントは、いずれの部分も送信されません。
[JSON で定数を指定] で、EventBridge がイベントの代わりにターゲットに送信する JSON テキストを指定します。
-
入力トランスフォーマー — EventBridge からターゲットに送信するテキストをカスタマイズするように入力トランスフォーマーを設定します。詳細については、「Amazon EventBridge 入力変換」を参照してください。
-
(オプション) [再試行ポリシー] で、エラーが発生した後に EventBridge がターゲットへのイベント送信を再試行する方法を指定します。
-
(オプション) [デッドレターキュー] で、標準 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] (次へ) を選択します。
-
新しいルールの詳細を確認します。セクションを変更するには、そのセクションの横にある [Edit] (編集) ボタンを選択します。
ルールの詳細を確認したら、[Create rule] (ルールを作成) を選択します。