チュートリアル:AWS Batch EventBridge を聴く - AWS Batch

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

チュートリアル:AWS Batch EventBridge を聴く

このチュートリアルでは、AWS Batch ジョブイベントを聴いて、CloudWatch Logs ログストリームに書き込むシンプルな AWS Lambda 関数を設定します。

前提条件

このチュートリアルでは、コンピューティング作業環境と、ジョブを受け付けることができるジョブキューがあることを前提としています。イベントをキャプチャするコンピューティング作業環境とジョブキューがなければ、の開始方法 AWS Batchのステップに従って作成します。このチュートリアルの最後に、オプションでこのジョブキューにジョブを送信してLambda 関数が正しく設定されていることをテストできます。

ステップ 1: Lambda 関数を作成する

この手順では、AWS Batch イベントストリームメッセージのターゲットとなるシンプルな Lambda 関数を作成します。

ターゲットの Lambda 関数を作成するには
  1. AWS Lambda コンソールを (https://console.aws.amazon.com/lambda/) 開きます。

  2. 関数の作成 を選択し、一から作成 を選択します。

  3. 関数名] に、batch-event-stream-handlerと入力します。

  4. ランタイム] では、Python 3.8] を選択します。

  5. 関数の作成] を選択します。

  6. 関数コード] セクションで、以下の例に合わせてサンプルコードを編集します。

    import json def lambda_handler(event, _context): # _context is not used del _context if event["source"] != "aws.batch": raise ValueError("Function only supports input from events with a source type of: aws.batch") print(json.dumps(event))

    これは、AWS Batch から送信されたイベントを印刷するシンプルな Python 3.8 関数です。すべてが正しく設定されると、このチュートリアルの最後に、この Lambda 関数に関連付けられている CloudWatch Logs ログストリームにイベントの詳細が表示されます。

  7. デプロイ] をクリックします。

ステップ 2: イベントルールを登録する

このセクションでは、AWS Batch リソースから来るジョブイベントをキャプチャする EventBridge イベントルールを作成します。このルールでは、それが定義されているアカウント内の AWS Batch から送信されるすべてのイベントがキャプチャされます。ジョブメッセージ自体に、イベントソースに関する情報 (イベントソースの送信先ジョブキューの情報など) が含まれています。この情報を使用して、プログラムでイベントをフィルタリングおよびソートできます。

注記

AWS Management Console を使用してイベントルールを作成すると、コンソールは自動的に EventBridge が Lambda 関数を呼び出すための IAM 権限を追加します。ただし、AWS CLI を使用してイベントルールを作成する場合は、この権限を明示的に付与する必要があります。詳細については、Amazon EventBridge ユーザーガイドイベントとイベントパターンを参照してください。

EventBridge ルールを作成するには
  1. Amazon EventBridge コンソール (https://console.aws.amazon.com/events/) を開きます。

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

  3. ルールの作成 を選択します。

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

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

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

  6. ルールタイプ では、イベントパターンを持つルール] を選択します。

  7. 次へ を選択します。

  8. イベントソース では、その他] を選択します。

  9. イベントパターン では、カスタムパターン (JSON エディター) を選択します。

  10. 次のイベントパターンをテキストエリアに貼り付けます。

    { "source": [ "aws.batch" ] }

    このルールは、すべての AWS Batch グループとすべての AWS Batch イベントに適用されます。または、より具体的なルールを作成し、一部の結果をフィルタで除外することもできます。

  11. 次へ を選択します。

  12. ターゲットタイプ] では、AWSサービス] を選択します。

  13. ターゲットを選択 で、Lambda 関数 を選択します。

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

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

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

    3. デッドレターキュー で、標準 Amazon SQS キューをデッドレターキューとして使用するかどうかを選択します。EventBridge は、このルールに一致するイベントがターゲットに正常に配信されなかった場合に、そのイベントをデッドレターキューに送信します。次のいずれかを実行します。

      • デッドレターキューを使用しない場合は、なし] を選択します。

      • デッドレターキューとして使用する現在の AWS アカウントの Amazon SQS キューを選択 を選択し、ドロップダウンから使用するキューを選択します。

      • 他の AWS アカウントの Amazon SQS キューをデッドレターキューとして選択 を選択し、使用するキューの ARN を入力します。キューにメッセージを送信するための EventBridge 許可を付与するリソースベースのポリシーをそのキューにアタッチする必要があります。詳細については、Amazon EventBridge ユーザーガイドデッドレターキューへの許可の付与を参照してください。

  15. 次へ を選択します。

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

  17. 次へ をクリックします。

  18. ルールの詳細を確認し、ルールの作成 を選択します。

ステップ 3: 設定をテストする

ジョブキューにジョブを送信して EventBridge 設定をテストできます。すべてが適切に設定されている場合、Lambda 関数がトリガーされ、関数の CloudWatch Logs ログストリームにイベントデータが書き込まれます。

設定をテストするには
  1. https://console.aws.amazon.com/batch/ で AWS Batch コンソールを開きます。

  2. 新しい AWS Batch ジョブを送信します。詳細については、ジョブの送信を参照してください。

  3. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  4. ナビゲーションペインで、ログ] を選択して Lambda 関数 (例えば、/aws/lambda/my-function など)] のロググループを選択します。

  5. イベントデータを表示するログストリームを選択します。