

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

# Step Functions で Task 状態からワークフロー実行を開始する
<a name="concepts-nested-workflows"></a>

AWS Step Functions は、ステートマシンの `Task` 状態から直接ワークフロー実行を開始できます。これにより、ワークフローを小さなステートマシンに分割し、これらの他のステートマシンの実行を開始できます。これらの新しいワークフロー実行を開始することで、以下のことが可能になります。
+ 高レベルのワークフローを、低レベルのタスク固有のワークフローから分離する。
+ 別のステートマシンを複数回呼び出すことによって、要素が繰り返されるのを回避する。
+ モジュール式の再利用可能なワークフローのライブラリを作成して、開発を迅速化する。
+ 複雑さを軽減し、ステートマシンの編集とトラブルシューティングを容易にする。

Step Functions は、独自の API を[統合サービス](integrate-services.md)として呼び出して、これらのワークフロー実行をスタートできます。`StartExecution` 状態から `Task` API アクションを呼び出し、必要なパラメータを渡すだけです。[サービス統合パターン](connect-to-resource.md)のいずれかを使用する Step Functions API を呼び出すことができます。

**ヒント**  
ネストされたワークフローの例をデプロイするには、「*AWS Step Functions ワークショップ*」の「[コストの最適化](https://catalog.workshops.aws/stepfunctions/nested-workflow)」を参照してください。

ステートマシンの新しい実行を開始するには、次の例のような `Task` 状態を使用します。

```
{  
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution",
   "Parameters":{  
      "StateMachineArn":"arn:aws:states:region:account-id:stateMachine:HelloWorld",
      "Input":{  
         "Comment":"Hello world!"
      },
   },
   "Retry":[  
      {  
        "ErrorEquals":[  
            "StepFunctions.ExecutionLimitExceeded"
        ]
      }
   ],
   "End":true
}
```

この `Task` 状態は、`HelloWorld` ステートマシンの新しい実行を開始し、JSON コメントを入力として渡します。

**注記**  
`StartExecution` API アクションクォータでは、開始できる実行の数を制限できます。`Retry` で `StepFunctions.ExecutionLimitExceeded` を使用して、実行が確実に開始されるようにします。以下を参照してください。  
[API アクションのスロットリングに関連するクォータ](service-quotas.md#service-limits-api-action-throttling-general)
[Step Functions ワークフローでのエラー処理](concepts-error-handling.md)

## ワークフロー実行の関連付け
<a name="nested-execution-startid"></a>

開始されたワークフロー実行とそれを開始した実行を関連付けるには、[Context オブジェクト](input-output-contextobject.md)から実行入力に実行 ID を渡します。実行中の `Task` ステートから、Context オブジェクトの ID にアクセスできます。パラメータ名に `.$` を追加し、`$$.Execution.Id` を使用して Context オブジェクトの ID を参照することで、実行 ID を渡します。

```
"AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id"
```

実行を開始するときに、`AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID` という特別なパラメータを使用できます。含まれている場合は、この関連付けは Step Functions コンソールの **[Step details]** (ステップ詳細) セクションでリンクを提供します。指定すると、ワークフローの実行を、実行の開始から、開始したワークフロー実行まで簡単にトレースできます。前の例を使用して、次のように実行 ID を `HelloWorld` ステートマシンの開始した実行に関連付けます。

```
{  
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution",
   "Parameters":{  
      "StateMachineArn":"arn:aws:states:region:account-id:stateMachine:HelloWorld",
      "Input": {
        "Comment": "Hello world!",
        "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id"
       }
   },
   "End":true
}
```

詳細については次を参照してください:
+ [ サービスとの統合](integrate-services.md)
+ [Step Functions でサービス API にパラメータを渡す](connect-parameters.md)
+ [Context オブジェクトへのアクセス](input-output-contextobject.md#contextobject-access)
+ [AWS Step Functions](connect-stepfunctions.md)