Step Functions API を使用して長時間実行されるワークフローを継続する (推奨) - AWS Step Functions

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

Step Functions API を使用して長時間実行されるワークフローを継続する (推奨)

AWS Step Functions は一定の期間とステップ数のあるワークフローを実行するように設計されています。Standard ワークフロー実行の期間は最大 1 年間で、そのイベント数は最大 25,000 です (「Step Functions のサービスクォータ」を参照してください)。

長期実行の実行では、Task 状態から新しいワークフロー実行を開始することで、ハードクォータに到達しないようにできます。ワークフローをより小さなステートマシンに分割し、進行中の作業を新しい実行で継続する必要があります。

新しいワークフロー実行を開始するには、Task 状態から StartExecution API アクションを呼び出し、必要なパラメータを渡します。

Step Functions は、独自の API を統合サービスとして呼び出して、ワークフロー実行を開始できます。実行時間がない場合の Service Quotas の超過を避けるために、この方法を使用することを推奨します。

ステップ 1: 長時間実行するステートマシンを作成する

長時間実行するステートマシンを作成して、別のステートマシンの Task 状態から開始できるようにします。このチュートリアルでは、Lambda 関数を使用するステートマシンを使用します。

注記

このステートマシンの名前と Amazon リソースネームは、後で使用できるようにテキストファイルにコピーしておいてください。

ステップ 2: Step Functions API アクションを呼び出すステートマシンを作成する

Task 状態からワークフロー実行を開始する
  1. Step Functions コンソールを開き、[ステートマシンの作成] を選択します。

  2. [テンプレートを選択] ダイアログボックスで [空白] を選択します。

  3. [選択] を選択して、デザインモード で Workflow Studio を開きます。

  4. [アクション] タブで、[StartExecution] API アクションをドラッグし、[最初の状態をここにドラッグ] とラベル付けされた空の状態にドロップします。

  5. [StartExecution] 状態を選択し、デザインモード[構成] タブで次の操作を行います。

    1. 状態の名前を Start nested execution に変更します。

    2. [統合タイプ] には、ドロップダウンリストから [AWS SDK - 新規] を選択します。

    3. [API パラメータ] で、次の操作を行います。

      1. StateMachineArn は、サンプルの Amazon リソースネームをステートマシンの ARN に置き換えます。例えば、Lambda を使用するステートマシン の ARN を入力します。

      2. Input ノードで、次のように、既存のプレースホルダーテキストを置き換えます。

        "Comment": "Starting workflow execution using a Step Functions API action"
      3. [API パラメータ] の入力は、次のようになっていることを確認してください。

        { "StateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:LambdaStateMachine", "Input": { "Comment": "Starting workflow execution using a Step Functions API action", "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id" }
  6. (オプション) インスペクターパネル パネルの [定義] を選択すると、ワークフローの自動生成された Amazon States Language (ASL) の定義が表示されます。

    ヒント

    また、Workflow Studio の コードエディタ で ASL の定義を表示できます。コードエディタで、ワークフローの ASL の定義を編集することもできます。

  7. ステートマシンの名前を指定します。これを行うには、MyStateMachine のデフォルトステートマシン名の横にある編集アイコンを選択します。次に、[ステートマシンの設定][ステートマシン名] ボックスに名前を指定します。

    このチュートリアルでは、名前として「ParentStateMachine」と入力します。

  8. (オプション) [ステートマシンの設定] で、ステートマシンのタイプや実行ロールなど、他のワークフロー設定を指定します。

    このチュートリアルでは、[ステートマシンの設定] のデフォルト設定をすべてそのまま使用します。

    ステートマシンに適切なアクセス許可を持つ IAM ロールを以前に作成していて、そのロールを使用する場合は、[アクセス許可][既存のロールを選択] を選択し、一覧からロールを選択します。または、[ロールの ARN を入力] を選択し、その IAM ロールの ARN を指定します。

  9. [ロールの作成を確認] ダイアログボックスで、[確認] を選択して続行します。

    [ロールの設定を表示] を選択して [ステートマシンの設定] に戻ることもできます。

    注記

    Step Functions が作成した IAM ロールを削除すると、Step Functions を後で再作成することはできません。同様に、ロールを変更すると (例えば、IAM ポリシーのプリンシパルから Step Functions を削除するなど)、後で Step Functions でそれを元の設定に復元することはできません。

ステップ 3: IAM ポリシーを変更する

ステートマシンに Lambda 関数を使用するステートマシンの実行を開始するアクセス許可があることを確認するには、ステートマシンの IAM ロールにインラインポリシーをアタッチする必要があります。詳細については、「IAM ユーザーガイド」の「インラインポリシーの埋め込み」を参照してください。

  1. [ParentStateMachine] ページで、[IAM ロール ARN] を選択し、ステートマシンの IAM ロール ページに移動します。

  2. [ParentStateMachine] の IAM ロールに適切なアクセス許可を割り当てて、別のステートマシンの実行を開始できるようにします。これらのアクセス許可を割り当てるには、次の手順を実行します。

    1. IAM [ロール] ページで、[アクセス許可を追加] を選択し、次に [インラインポリシーを作成] を選択します。

    2. [ポリシーの作成] ページで、[JSON] タブを選択します。

    3. 既存のテキストを次のポリシーに置き換えます。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:StartExecution" ], "Resource": [ "arn:aws:states:us-east-2:123456789012:stateMachine:LambdaStateMachine" ] } ] }
    4. [ポリシーの確認] を選択します。

    5. ポリシーの名前を指定し、[ポリシーの作成] を選択します。

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

ステートマシンの実行は、ワークフローを実行してタスクを実施するインスタンスです。

  1. [ParentStateMachine] ページで、[実行を開始] を選択します。

    [実行を開始] ダイアログが表示されます。

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

    1. (オプション) 生成されたデフォルトを上書きするカスタム実行名を入力します。

      非 ASCII 名とログ記録

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

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

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

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

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

  3. [LambdaStateMachine] ページを開き、[ParentStateMachine] によってトリガーされた新しい実行を確認します。