AWS Batch
ユーザーガイド

チュートリアル: AWS Batch CloudWatch イベント のリッスン

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

前提条件

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

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

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

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

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

  2. [Create a Lambda function]、[Author from scratch] の順に選択します。

  3. [Name] に、「batch-event-stream-handler」と入力します。

  4. [Role] で、[Create a custom role]、[Allow] の順に選択します。

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

  6. [Function code] セクションで、ランタイム用に [Python 2.7] を選択し、次の例に一致するようにサンプルコードを編集します。

    import json def lambda_handler(event, 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 2.7 関数です。すべてが正しく設定されると、このチュートリアルの最後に、この Lambda 関数に関連付けられている CloudWatch Logs ログストリームにイベントの詳細が表示されます。

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

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

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

注記

AWS マネジメントコンソールを使用してイベントルールを作成すると、CloudWatch イベント から Lambda 関数を呼び出す権限を付与するために必要な IAM アクセス権限がコンソールによって自動的に追加されます。AWS CLI を使用してイベントルールを作成する場合は、この権限を明示的に付与する必要があります。詳細については、Amazon CloudWatch ユーザーガイドイベントとイベントパターンを参照してください。

CloudWatch イベント ルールを作成するには

  1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

  2. ナビゲーションペインで、[Events]、[Create rule] の順に選択します。

  3. [Event source] で、イベントソースとして [Event Pattern] を選択し、[Build custom event pattern] を選択します。

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

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

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

  5. [Targets] で、[Add target] を選択します。[ターゲットの種類] で [Lambda 関数] を選択し、Lambda 関数を選択します。

  6. [Configure details] を選択します。

  7. [Rule definition] で、ルールの名前と説明を入力し、[Create rule] を選択します。

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

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

設定をテストするには

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

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

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

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

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