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

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

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

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

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

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

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

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

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

注記

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

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

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

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

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

  4. Actions タブから、StartExecutionAPIアクションをドラッグし、ここに「最初の状態をドラッグ」というラベルの付いた空の状態にドロップします。

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

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

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

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

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

      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. (オプション) Inspector パネルパネルで 定義を選択すると、ワークフローの自動生成された Amazon ステートメント言語 (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 ページでロールを選択してIAMARN、ステートマシンのIAMロールページに移動します。

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

    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、 でメトリクスを追跡できるようにASCII、文字のみを使用することをお勧めします CloudWatch。

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

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

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

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

  3. LambdaStateMachine ページを開き、 によってトリガーされる新しい実行に気づきますParentStateMachine