Job ステータスの投票 (Lambda、) AWS Batch - AWS Step Functions

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

Job ステータスの投票 (Lambda、) AWS Batch

AWS Batch このサンプルプロジェクトはジョブポーラーを作成します。 AWS Step Functions AWS Lambda Waitジョブをチェックするステートループを作成するために使用するステートマシンを実装しています。 AWS Batch

このサンプルプロジェクトは、Step Functions AWS Batch ワークフローがジョブを送信し、そのジョブが完了するのを待ってから正常に終了するようにすべてのリソースを作成および構成します。

注記

また、Lambda 関数を使用せずに、このパターンを実装することもできます。 AWS Batch 直接制御する方法については、を参照してくださいAWS Step Functions 他のサービスとの併用

このサンプルプロジェクトは、ステートマシン、2 つの Lambda 関数、および 1 AWS Batch つのキューを作成し、関連する IAM 権限を設定します。

AWS 他のサービスを制御する方法の詳細については AWS Step Functions 、「」を参照してください。AWS Step Functions 他のサービスとの併用

ステップ 1: ステートマシンを作成してリソースをプロビジョニングする

  1. Step Functions コンソールを開き、[ステートマシンの作成] を選択します。

  2. 検索ボックスに Job Poller と入力し、返された検索結果から [ジョブポーリング] を選択します。

  3. [次へ] を選択して続行します。

  4. Step Functions には、 AWS のサービス 選択したサンプルプロジェクトで使用されているものが一覧表示されます。サンプルプロジェクトのワークフローグラフも表示されます。 AWS アカウント このプロジェクトを自分のプロジェクトにデプロイするか、独自のプロジェクトを構築するための出発点として使用してください。進める方法に応じて、[デモの実行] または [その上に構築する] を選択します。

    このサンプルプロジェクトは、以下のリソースをデプロイします。

    • ジョブの送信、 AWS Batch AWS Batch 送信されたジョブの現在のステータス、および最終的なジョブの完了ステータスの取得を行う 3 つの Lambda 関数。

    • ジョブ AWS Batch

    • AWS Step Functions 任意のステートマシン

    • 関連 AWS Identity and Access Management (IAM) ロール

    以下のイメージは、[ジョブポーリング] サンプルプロジェクトのワークフローグラフを示しています。

    
             [ジョブポーリング] サンプルプロジェクトのワークフローグラフ。
  5. [テンプレートの使用] を選択して選択を続行します。

  6. 次のいずれかを行います。

    • [その上に構築する] を選択した場合、Step Functions は選択したサンプルプロジェクトのワークフロープロトタイプを作成します。Step Functions は、ワークフロー定義にリストされているリソースをデプロイしません。

      Workflow Studio の デザインモード では、[State browser] (状態ブラウザ) から状態をドラッグアンドドロップして、ワークフロープロトタイプの構築を続行できます。または、VS Code と同様の統合コードエディタを提供する コードモード に切り替えて、Step Functions コンソール内のステートマシンの Amazon ステートメント言語 (ASL) 定義を更新してください。Workflow Studio を使用してステートマシンを構築する方法の詳細については、「Workflow Studio を使用する」を参照してください。

      重要

      ワークフローを実行する前に、サンプルプロジェクトで使用されているリソースのプレースホルダー Amazon リソースネーム (ARN) を必ず更新してください。

    • [デモの実行] を選択した場合、Step Functions AWS CloudFormation AWS はテンプレートを使用してそのテンプレートにリストされているリソースをにデプロイする読み取り専用のサンプルプロジェクトを作成します。 AWS アカウント

      ヒント

      サンプルプロジェクトのステートマシン定義を表示するには、[コード] を選択します。

      準備できたら、[デプロイと実行] を選択してサンプルプロジェクトをデプロイし、リソースを作成します。

      これらのリソースおよび関連する IAM 許可が作成されるまで、最大 10 分かかることがあります。リソースのデプロイ中に CloudFormation Stack ID リンクを開いて、どのリソースがプロビジョニングされているかを確認できます。

      サンプルプロジェクトのすべてのリソースが作成されると、新しいサンプルプロジェクトが [ステートマシン] ページに表示されます。

      重要

      CloudFormation テンプレートで使用される各サービスには標準料金が適用される場合があります。

ステップ 2: ステートマシンを実行する

すべてのリソースのプロビジョニングとデプロイが完了すると、次のような入力例を含む [実行を開始] ダイアログボックスが表示されます。

{ "jobName": "my-job", "jobDefinition": "arn:aws:batch:us-east-2:123456789012:job-definition/SampleJobDefinition-343f54b445d5312:1", "jobQueue": "arn:aws:batch:us-east-2:123456789012:job-queue/SampleJobQueue-4d9d696031e1449", "wait_time": 60 }
注記

wait_time は、Wait 状態が 60 秒ごとにループするように命令します。

  • [実行を開始] ダイアログボックスで、以下の操作を行います。

    1. (オプション) 実行を識別するには、[名前] ボックスに名前を指定します。デフォルトでは、Step Functions は自動的に一意の実行名を生成します。

      注記

      Step Functions では、ステートマシン、実行、アクティビティの名前、および ASCII 以外の文字を含むラベルを作成できます。これらの非ASCII名はAmazonでは機能しません。 CloudWatch CloudWatch メトリクスを追跡できるようにするには、ASCII 文字のみを使用する名前を選択してください。

    2. (オプション) [入力] ボックスに、JSON 形式の入力値を入力してワークフローを実行します。

      [デモの実行] を選択した場合、実行入力を入力する必要はありません。

      注記

      デプロイしたデモプロジェクトに事前入力された実行入力データが含まれている場合は、その入力を使用してステートマシンを実行します。

    3. [実行のスタート] を選択します。

    4. Step Functions コンソールから実行 ID のタイトルが付いたページが表示されます。このページは、[実行の詳細] ページと呼ばれます。このページでは、実行の進行中または完了後に実行結果を確認できます。

      実行結果を確認するには、[グラフビュー] で個々の状態を選択し、ステップの詳細 ペインの個々のタブを選択すると、入力、出力、定義などの各状態の詳細がそれぞれ表示されます。[実行の詳細] ページに表示できる実行情報の詳細については、「[実行の詳細] ページ - インターフェイスの概要」を参照してください。

    たとえば、 AWS Batch ジョブのステータスの変化や実行のループ結果を確認するには、「出力」タブを選択します。

    以下のイメージは、[グラフ表示] 内の実行ステータスグラフを示しています。また、[出力] タブには、選択したステップの実行出力も表示されます。

    
            [グラフ表示] ビューの [最終ジョブステータスを取得] という名前の選択したステップの実行出力。

ステートマシンのコード例

このサンプルプロジェクトのステートマシンは、 AWS Lambda と統合されてジョブを送信します。 AWS Batch このステートマシンの例を参照して、Step Functions が Lambda とをどのように制御するかを確認してください。 AWS Batch

AWS Step Functions AWS 他のサービスを制御する方法の詳細については、を参照してください。AWS Step Functions 他のサービスとの併用

{ "Comment": "An example of the Amazon States Language that runs an AWS Batch job and monitors the job until it completes.", "StartAt": "Submit Job", "States": { "Submit Job": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-JobStatusPol-SubmitJobFunction-jDaYcl4cx55r", "ResultPath": "$.guid", "Next": "Wait X Seconds" }, "Wait X Seconds": { "Type": "Wait", "SecondsPath": "$.wait_time", "Next": "Get Job Status" }, "Get Job Status": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-JobStatusPoll-CheckJobFunction-1JkJwY10vonI", "Next": "Job Complete?", "InputPath": "$.guid", "ResultPath": "$.status" }, "Job Complete?": { "Type": "Choice", "Choices": [ { "Variable": "$.status", "StringEquals": "FAILED", "Next": "Job Failed" }, { "Variable": "$.status", "StringEquals": "SUCCEEDED", "Next": "Get Final Job Status" } ], "Default": "Wait X Seconds" }, "Job Failed": { "Type": "Fail", "Cause": "AWS Batch Job Failed", "Error": "DescribeJob returned FAILED" }, "Get Final Job Status": { "Type": "Task", "Resource": "arn:aws::lambda:us-east-1:111122223333:function:StepFunctionsSample-JobStatusPoll-CheckJobFunction-1JkJwY10vonI", "InputPath": "$.guid", "End": true } } }