チュートリアル: のリッスンAWS Batch​ EventBridge - AWS Batch

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

チュートリアル: のリッスンAWS Batch​ EventBridge

このチュートリアルでは、AWS Lambdaリッスンする関数AWS Batchジョブイベントとそれを書き出す CloudWatch ログストリームをログします。

前提条件

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

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

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

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

  1. AWS Lambda コンソールを (https://console.aws.amazon.com/lambda/) 開きます。

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

  3. [Function name] (関数名) に batch-event-stream-handler と入力します。

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

  5. [Create function] を選択します。

  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 関数です。すべてが正しく設定されると、このチュートリアルの最後に、 CloudWatch この Lambda 関数に関連付けられているログストリームをログに記録します。

  7. [Deploy‬] (デプロイ) をクリックします。

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

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

注記

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

を作成するには EventBridge ルール

  1. アマゾンを開く EventBridge コンソールhttps://console.aws.amazon.com/events/

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

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

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

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

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

  6. [Rule type] (ルールタイプ) では、[Rule with an event pattern] (イベントパターンを持つルール) を選択します。

  7. [Next] (次へ) を選択します。

  8. [Event source] (イベントソース) では、[Other] (その他) を選択します。

  9. を使用する場合イベントパターン、選択カスタムパターン (JSON エディター)

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

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

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

  11. [Next] (次へ) を選択します。

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

  13. を使用する場合ターゲットを選択する、選択Lambda 関数、Lambda 関数を選択します。

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

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

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

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

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

      • 選択現在の Amazon SQSキューを選択してくださいAWSデッドレターキューとして使用するものドロップダウンから使用するキューを選択します。

      • Select an Amazon SQS queue in an other AWS account as a dead-letter queue(他の アカウントの Amazon SQS キューをデッドレターキューとして選択) を選択し、使用するキューの ARN を入力します。許可を付与するリソースベースのポリシーをそのキューにアタッチする必要があります EventBridge メッセージを送信する権限。詳細については、次を参照してください。デッドレターキューへのアクセス許可の付与アマゾン EventBridge ユーザーガイド

  15. [Next] (次へ) を選択します。

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

  17. [Next] (次へ) を選択します。

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

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

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

設定をテストするには

  1. を開くAWS Batchコンソールhttps://console.aws.amazon.com/batch/

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

  3. を開く CloudWatch コンソールhttps://console.aws.amazon.com/cloudwatch/

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

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