Step Functions と Lambda を使用してワークフロー内でワークフローを開始する - AWS Step Functions

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

Step Functions と Lambda を使用してワークフロー内でワークフローを開始する

このサンプルプロジェクトでは、 AWS Step Functions ステートマシンを使用して他のステートマシンの実行を開始する方法を示します。別のステートマシンからステートマシンの実行を開始する方法については、「Step Functions でタスク状態からワークフロー実行を開始する」を参照してください。

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

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

  2. 検索ボックスに Start a workflow within a workflow と入力し、返された検索結果から [ワークフロー内でワークフローを開始する] を選択します。

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

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

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

    • 追加のステートマシン このステートマシンの実行は、実行するステートマシンによって開始されます。

    • コールバック Lambda 関数。この関数は、コールバックメカニズムを実装するために追加のステートマシンで使用されます。

    • AWS Step Functions ステートマシン

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

    以下のイメージは、[ワークフロー内でワークフローを開始する] サンプルプロジェクトのワークフローグラフを示しています。

    [ワークフローサンプルプロジェクト内でワークフローを開始する] のワークフローグラフ。
  5. [テンプレートの使用] を選択して選択を続行します。

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

    • Build on it を選択した場合、Step Functions はワークフロープロトタイプを作成しますが、ワークフロー定義にリソースをデプロイしないため、ワークフロープロトタイプの構築を継続できます。

      Workflow Studio の ではデザインモード、ワークフロープロトタイプに状態を追加できます。または、 に切り替えコードモードて、統合されたコードエディタを使用して、Step Functions コンソールからステートマシンの Amazon ステートメント言語 (ASL) 定義を編集することもできます。

      重要

      ワークフロー を実行する前に、サンプルプロジェクトで使用されるリソースのプレースホルダー Amazon リソースネーム (ARN) を更新する必要がある場合があります。 ワークフローを実行

    • デモの実行 を選択した場合、Step Functions は、 AWS CloudFormation テンプレートを使用してそのテンプレート内の AWS リソースを にデプロイする読み取り専用プロジェクトを作成します AWS アカウント。コードモード を選択すると、ステートマシンの定義を表示できます。

      デプロイと実行を選択してプロジェクトをデプロイし、リソースを作成します。

      デプロイには、リソースとIAMアクセス許可が作成されるまでに最大 10 分かかる場合があることに注意してください。リソースのデプロイ中に、 AWS CloudFormation スタック ID リンクを開いて、プロビジョニングされているリソースを確認できます。

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

      重要

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

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

  1. [ステートマシン] ページで、サンプルプロジェクトを選択します。

  2. サンプルプロジェクトページで、[実行を開始] を選択します。

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

    1. (オプション) 実行を識別するには、名前を指定するか、デフォルトで生成された実行名 を使用します。

      注記

      Step Functions は、 ASCII以外の文字を含むステートマシン、実行、アクティビティ、およびラベルの名前を受け入れます。文字ASCII以外の名前は Amazon では機能しないため CloudWatch、 ASCII でメトリクスを追跡できるように、文字のみを使用することをお勧めします CloudWatch。

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

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

      注記

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

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

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

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

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

このサンプルプロジェクトのステートマシンは、パラメータをそれらのリソースに直接渡す AWS Lambda ことで、別のステートマシンと を統合します。

このステートマシンの例を参照して、Step Functions が他のステートマシンの StartExecutionAPIアクションを呼び出す方法を確認します。他のステートマシンの 2 つのインスタンスを並行して起動します。1 つは ジョブの実行 (.sync) パターンを使用し、もう 1 つは タスクトークンのコールバックまで待機する パターンを使用します。

AWS Step Functions が他の AWS サービスをコントロールする方法の詳細については、「」を参照してください他の サービスと Step Functions の統合

{ "Comment": "An example of combining workflows using a Step Functions StartExecution task state with various integration patterns.", "StartAt": "Start new workflow and continue", "States": { "Start new workflow and continue": { "Comment": "Start an execution of another Step Functions state machine and continue", "Type": "Task", "Resource": "arn:aws:states:::states:startExecution", "Parameters": { "StateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:NestingPatternAnotherStateMachine-HZ9gtgspmdun", "Input": { "NeedCallback": false, "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id" } }, "Next": "Start in parallel" }, "Start in parallel": { "Comment": "Start two executions of the same state machine in parallel", "Type": "Parallel", "End": true, "Branches": [ { "StartAt": "Start new workflow and wait for completion", "States": { "Start new workflow and wait for completion": { "Comment": "Start an execution of the same 'NestingPatternAnotherStateMachine' and wait for its completion", "Type": "Task", "Resource": "arn:aws:states:::states:startExecution.sync", "Parameters": { "StateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:NestingPatternAnotherStateMachine-HZ9gtgspmdun", "Input": { "NeedCallback": false, "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id" } }, "OutputPath": "$.Output", "End": true } } }, { "StartAt": "Start new workflow and wait for callback", "States": { "Start new workflow and wait for callback": { "Comment": "Start an execution and wait for it to call back with a task token", "Type": "Task", "Resource": "arn:aws:states:::states:startExecution.waitForTaskToken", "Parameters": { "StateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:NestingPatternAnotherStateMachine-HZ9gtgspmdun", "Input": { "NeedCallback": true, "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id", "TaskToken.$": "$$.Task.Token" } }, "End": true } } } ] } } }

他の AWS のサービスで Step Functions を使用するIAMときに を設定する方法については、「」を参照してくださいStep Functions が統合サービスのIAMポリシーを生成する方法