

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

# チュートリアル: EventBridge を使用して AWS Batch ジョブイベントをリッスンする
<a name="batch_cwet"></a>

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

## 前提条件
<a name="cwet_prereqs"></a>

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

**Topics**
+ [

## 前提条件
](#cwet_prereqs)
+ [

# チュートリアル: Lambda 関数を作成する
](cwet_create_lam.md)
+ [

# チュートリアル: イベントルールを登録する
](cwet_register_event_rule.md)
+ [

# チュートリアル: 設定をテストする
](cwet_test.md)

# チュートリアル: Lambda 関数を作成する
<a name="cwet_create_lam"></a>

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

**ターゲットの Lambda 関数を作成するには**

1. AWS Lambda コンソールの [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) を開いてください。

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

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

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

1. **関数を作成** を選択します。

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

   ```
   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 ログストリームにイベントの詳細が表示されます。

1. **[デプロイ]** をクリックします。

# チュートリアル: イベントルールを登録する
<a name="cwet_register_event_rule"></a>

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

**注記**  
AWS マネジメントコンソール を使用してイベントルールを作成すると、コンソールは自動的に EventBridge が Lambda 関数を呼び出すための IAM 権限を追加します。ただし、AWS CLI を使用してイベントルールを作成する場合は、この権限を明示的に付与する必要があります。詳細については、*Amazon EventBridge ユーザーガイド*の[イベントとイベントパターン](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html)を参照してください。

**EventBridge ルールを作成するには**

1. Amazon EventBridge コンソールの [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/) を開いてください。

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

1. **[ルールの作成]** を選択します。

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

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

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

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

1. **次へ** を選択します。

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

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

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

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

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

1. **次へ** を選択します。

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

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

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

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

   1. **再試行** で、0～185 の数値を入力します。

   1. **デッドレターキュー** で、標準 Amazon SQS キューをデッドレターキューとして使用するかどうかを選択します。EventBridge は、このルールに一致するイベントがターゲットに正常に配信されなかった場合に、そのイベントをデッドレターキューに送信します。次のいずれかを行います:
      + デッドレターキューを使用しない場合は、**なし]** を選択します。
      + **デッドレターキューとして使用する現在の AWS アカウントの Amazon SQS キューを選択** を選択し、ドロップダウンから使用するキューを選択します。
      + **他の AWS アカウントの Amazon SQS キューをデッドレターキューとして選択** を選択し、使用するキューの ARN を入力します。キューにメッセージを送信するための EventBridge 許可を付与するリソースベースのポリシーをそのキューにアタッチする必要があります。詳細については、*Amazon EventBridge ユーザーガイド*の[デッドレターキューへの許可の付与](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rule-dlq.html#eb-dlq-perms)を参照してください。

1. **次へ** を選択します。

1. (オプション) ルールに 1 つ以上のタグを入力します。詳細については、*Amazon EventBridge ユーザーガイド*の[Amazon EventBridge のタグ](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-tagging.html)を参照してください。

1. **次へ**をクリックします。

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

# チュートリアル: 設定をテストする
<a name="cwet_test"></a>

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

**設定をテストするには**

1. AWS Batch コンソールを [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/) で開きます。

1. 新しい AWS Batch ジョブを送信します。詳細については、[チュートリアル: ジョブを送信する](submit_job.md)を参照してください。

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

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

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