

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

# Step Functions API を使用して長時間実行されるワークフローを継続する (推奨)
<a name="tutorial-continue-new"></a>

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

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

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

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

## ステップ 1: 長時間実行するステートマシンを作成する
<a name="use-sfn-api-create-called-state-machine"></a>

長時間実行するステートマシンを作成して、別のステートマシンの `Task` 状態から開始できるようにします。このチュートリアルでは、[Lambda 関数を使用するステートマシン](tutorial-creating-lambda-state-machine.md)を使用します。

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

## ステップ 2: Step Functions API アクションを呼び出すステートマシンを作成する
<a name="use-sfn-api-create-caller-state-machine"></a>

**`Task` 状態からワークフロー実行を開始する**

1. [Step Functions コンソール](https://console.aws.amazon.com/states/home)を開き、メニューから **[ステートマシン]** を選択したら、**[ステートマシンの作成]** を選択します。

1. **[空白から作成]** を選択します。

1. ステートマシンに名前を付け、**[続行]** を選択して Workflow Studio でステートマシンを編集します。

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

1. **[StartExecution]** 状態を選択し、[デザインモード](workflow-studio.md#wfs-interface-design-mode) の **[構成]** タブで次の操作を行います。

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

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

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

      1. `StateMachineArn` は、サンプルの Amazon リソースネームをステートマシンの ARN に置き換えます。例えば、[Lambda を使用するステートマシン](tutorial-creating-lambda-state-machine.md) の ARN を入力します。

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

         ```
         "Comment": "Starting workflow execution using a Step Functions API action"
         ```

      1. **[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"
           }
         ```

1. (オプション) [インスペクターパネル](workflow-studio.md#workflow-studio-components-formdefinition) パネルの **[定義]** を選択すると、ワークフローの自動生成された [Amazon States Language](concepts-amazon-states-language.md) (ASL) の定義が表示されます。
**ヒント**  
また、Workflow Studio の [コードエディタ](workflow-studio.md#wfs-interface-code-editor) で ASL の定義を表示できます。コードエディタで、ワークフローの ASL の定義を編集することもできます。

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

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

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

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

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

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

   **[ロールの設定を表示]** を選択して **[ステートマシンの設定]** に戻ることもできます。
**注記**  
Step Functions が作成した IAM ロールを削除すると、Step Functions を後で再作成することはできません。同様に、ロールを変更すると (例えば、IAM ポリシーのプリンシパルから Step Functions を削除するなど)、後で Step Functions でそれを元の設定に復元することはできません。

## ステップ 3: IAM ポリシーを変更する
<a name="use-sfn-api-update-policy-start-execution"></a>

ステートマシンに [Lambda 関数を使用するステートマシン](tutorial-creating-lambda-state-machine.md)の実行を開始するアクセス許可があることを確認するには、ステートマシンの IAM ロールにインラインポリシーをアタッチする必要があります。詳細については、「IAM ユーザーガイド**」の「[インラインポリシーの埋め込み](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#embed-inline-policy-console)」を参照してください。

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

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

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

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

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

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "states:StartExecution"
                ],
                "Resource": [
                    "arn:aws:states:us-east-1:123456789012:stateMachine:LambdaStateMachine"
                ]
            }
        ]
      }
      ```

   1. **[ポリシーの確認]** を選択します。

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

## ステップ 4: ステートマシンを実行する
<a name="use-sfn-api-start-execution"></a>

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

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

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

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

   1. (オプション) 生成されたデフォルトを上書きするカスタム実行名を入力します。
**非 ASCII 名とログ記録**  
Step Functions では、ステートマシン、実行、アクティビティ、ラベルに、ASCII 以外の文字を含む名前を使用できます。このような文字を使用すると Amazon CloudWatch がデータを記録できなくなるため、Step Functions のメトリクスを追跡できるように ASCII 文字のみを使用することをお勧めします。

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

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

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

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

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