スケジュールに従って Lambda 関数を呼び出す - AWS Lambda

スケジュールに従って Lambda 関数を呼び出す

Amazon EventBridge スケジューラはサーバーレススケジューラで、一元化されたマネージドサービスからタスクを作成、実行、管理できます。EventBridge スケジューラでは、繰り返しのパターンに cron やレート式を使ってスケジュールを作成したり、1回限りの呼び出しを設定したりできます。配信の時間枠を柔軟に設定したり、再試行制限を定義したり、未処理のイベントの最大保持時間を設定できます。

Lambda で EventBridge スケジューラを設定すると、EventBridge スケジューラは Lambda 関数を非同期的に呼び出します。このページでは、EventBridge スケジューラを使用してスケジュールに基づき Lambda 関数を呼び出す方法について説明します。

実行ロールを設定する

新しいスケジュールを作成する場合、EventBridge スケジューラにはユーザーに代わってターゲット API オペレーションを呼び出すアクセス許可が必要です。実行ロールを使用して、これらのアクセス許可を EventBridge スケジューラに付与します。スケジュールの実行ロールにアタッチするアクセス許可ポリシーによって、必要なアクセス許可が定義されます。これらのアクセス許可は、EventBridge スケジューラが呼び出すターゲット API によって異なります。

次の手順のように EventBridge スケジューラコンソールを使用してスケジュールを作成すると、EventBridge スケジューラは選択したターゲットに基づき実行ロールを自動的に設定します。EventBridge スケジューラ SDK、AWS CLI、または AWS CloudFormation のいずれかを使用してスケジュールを作成する場合、EventBridge スケジューラがターゲットを呼び出すために必要なアクセス許可を付与する既存の実行ロールが必要です。スケジュールに合わせて実行ロールを手動で設定する方法についての詳細は、「EventBridge スケジューラユーザーガイド」の「実行ロールを設定する」を参照してください。

新しいスケジュールを作成する

コンソールを使用してスケジュールを作成するには
  1. Amazon EventBridge スケジューラコンソール (https://console.aws.amazon.com/scheduler/home) を開きます。

  2. [スケジュール] ページで、[スケジュールを作成] を選択します。

  3. [スケジュールの詳細を指定] ページの [スケジュールの名前と説明] セクションで、次を実行します。

    1. [スケジュール名] で、スケジュールの名前を入力します。例えば、MyTestSchedule と指定します。

    2. (オプション) [説明] で、スケジュールの説明を入力します。例えば、My first schedule と指定します。

    3. [スケジュールグループ] で、ドロップダウンリストからスケジュールグループを選択します。グループがない場合は、[デフォルト] を選択します。スケジュールグループを作成するには、[独自のスケジュールを作成] を選択します。

      スケジュールグループを使用して、スケジュールのグループにタグを追加します。

    1. スケジュールオプションを選択します。

      頻度 手順

      [1 回限りのスケジュール]

      1 回限りのスケジュールは、指定した日時に 1 回だけターゲットを呼び出します。

      [日付と時刻] で、次を実行します。

      • 有効な日付を YYYY/MM/DD 形式で入力します。

      • タイムスタンプを 24 時間 (hh:mm) 形式で入力します。

      • [タイムゾーン] で、タイムゾーンを選択します。

      [繰り返しのスケジュール]

      繰り返しのスケジュールは、cron 式またはレート式を使用して指定したレートでターゲットを呼び出します。

      1. [スケジュールの種類] では、次のいずれかを実行します。

        • Cron 式を使用してスケジュールを定義するには、[cron ベースのスケジュール] を選択して Cron 式を入力します。

        • Rate 式を使用してスケジュールを定義するには、[rate ベースのスケジュール] を選択して Rate 式を入力します。

          cron およびレート式の詳細については、「Amazon EventBridge スケジューラユーザーガイド」の「EventBridge スケジューラのスケジュールタイプ」を参照してください。

      2. [フレックスタイムウィンドウ] で、[オフ] を選択してオプションをオフにするか、事前定義された時間枠のいずれかを選択します。例えば、[15 分] を選択し、1 時間に 1 回ターゲットを呼び出す繰り返しのスケジュールを設定した場合、スケジュールは毎時の開始後 15 分以内に実行されます。

  4. (オプション) 前のステップで [定期的なスケジュール] を選択した場合は、[時間枠] セクションで次を実行します。

    1. [タイムゾーン] で、タイムゾーンを選択します。

    2. [開始日時] で、有効な日付を YYYY/MM/DD 形式で入力してから、タイムスタンプを 24 時間 (hh:mm) 形式で指定します。

    3. [終了日時] で、有効な日付を YYYY/MM/DD 形式で入力してから、タイムスタンプを 24 時間 (hh:mm) 形式で指定します。

  5. [Next] を選択します。

  6. [ターゲットを選択] ページで、EventBridge スケジューラが呼び出す AWS API オペレーションを選択します。

    1. [AWS Lambda 呼び出し] を選択します。

    2. [呼び出し] セクションで、関数を選択するか、[新しい Lambda 関数を作成] を選択します。

    3. (オプション) JSON ペイロードを入力します。ペイロードを入力しない場合、EventBridge スケジューラは空のイベントを使用して関数を呼び出します。

  7. [Next] を選択します。

  8. [Settings] (設定) ページで、以下の操作を行います。

    1. スケジュールをオンにするには、[スケジュールの状態][スケジュールを有効にする] をオンに切り替えます。

    2. スケジュールの再試行ポリシーを設定するには、[再試行ポリシーとデッドレターキュー (DLQ)] で次を実行します。

      • [再試行] を切り替えてオンにします。

      • [イベントの最大有効期間] で、EventBridge スケジューラが未処理のイベントを保持しなければならない最大の [時間][分] を入力します。

      • 最大 24 時間です。

      • [最大再試行回数] で、ターゲットがエラーを返した場合に EventBridge スケジューラがスケジュールを再試行する最大回数を入力します。

        再試行の最大値は 185 です。

      再試行ポリシーを使用すると、スケジュールがそのターゲットの呼び出しに失敗した場合、EventBridge スケジューラはスケジュールを再実行します。設定されている場合は、スケジュールの最大保持時間と再試行を設定する必要があります。

    3. EventBridge スケジューラが未配信のイベントを保存する場所を選択します。

      [デッドレターキュー (DLQ)] オプション 手順
      保存しない [None] を選択します。
      スケジュールを作成しようとしている同じ AWS アカウント にイベントを保存する
      1. [自分の AWS アカウント の Amazon SQS キューを DLQ として選択] を選択します。

      2. Amazon SQS キューの Amazon リソースネーム (ARN) を選択します。

      スケジュールを作成しようとしているのとは別の AWS アカウント にイベントを保存する
      1. [他の AWS アカウント の Amazon SQS キューを DLQ として指定] を選択します。

      2. Amazon SQS キューの Amazon リソースネーム (ARN) を入力します。

    4. カスタマーマネージドキーを使用してターゲットの入力を暗号化するには、[暗号化][暗号化設定をカスタマイズする (高度)] を選択します。

      このオプションを選択した場合は、既存の KMS キー ARN を入力するか、[AWS KMS key を作成] を選択して AWS KMS コンソールに移動します。EventBridge スケジューラが保管中のデータを暗号化する方法の詳細については、「Amazon EventBridge スケジューラユーザーガイド」の「保管中の暗号化」を参照してください。

    5. EventBridge スケジューラに新しい実行ロールを作成させるには、[このスケジュールの新しいロールを作成] を選択します。その後、[ロール名] で名前を入力します。このオプションを選択すると、EventBridge スケジューラは、テンプレート化されたターゲットに必要な許可をロールにアタッチします。

  9. [Next] を選択します。

  10. [スケジュールの確認と作成] ページで、スケジュールの詳細を確認します。各セクションで、そのステップに戻って詳細を編集するには、[編集] を選択します。

  11. [スケジュールを作成] を選択します。

    [スケジュール] ページで、新規および既存のスケジュールのリストを表示できます。[ステータス] 列で、新しいスケジュールが [有効] になっていることを確認します。

EventBridge スケジューラが関数を呼び出したことを確認するには、関数の Amazon CloudWatch ログを確認してください。

EventBridge スケジューラに関する詳細については、次を参照してください。