

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

# 実行中の実行から新しい AWS Step Functions ステートマシンを起動する
<a name="connect-stepfunctions"></a>

Step Functions は、サービス統合として独自の API と統合します。Step Functions を使用して、実行中のタスク状態から直接ステートマシンの新しい実行を開始する方法について説明します。新しいワークフローを構築するときに、[ネストされたワークフロー実行](concepts-nested-workflows.md)を使用して、メインワークフローの複雑さを軽減し、一般的なプロセスを再利用します。

**最適化された Step Functions 統合の主な機能**  
[ジョブの実行 (.sync)](connect-to-resource.md#connect-sync) 統合パターンが利用可能です。

詳細については次を参照してください:
+ [Task から開始する](concepts-nested-workflows.md)
+ [ サービスとの統合](integrate-services.md)
+ [Step Functions でサービス API にパラメータを渡す](connect-parameters.md)

## 最適化された Step Functions API
<a name="connect-stepfunctions-api"></a>
+ [https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)

## ワークフローの例
<a name="connect-stepfunctions-api-examples"></a>

以下には、別のステートマシンの実行を開始し、その完了を待機する `Task` 状態が含まれています。

```
{  
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution.sync:2",
   "Arguments":{  
      "Input":{
        "Comment": "Hello world!"
       },
      "StateMachineArn":"arn:aws:states:{{region}}:{{account-id}}:stateMachine:HelloWorld",
      "Name":"ExecutionName"
   },
   "End":true
}
```

以下には、別のステートマシンの実行を開始する `Task` 状態が含まれています。

```
{  
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution",
   "Arguments":{  
      "Input":{
        "Comment": "Hello world!"
       },
      "StateMachineArn":"arn:aws:states:{{region}}:{{account-id}}:stateMachine:HelloWorld",
      "Name":"ExecutionName"
   },
   "End":true
}
```

以下には、[コールバック](connect-to-resource.md#connect-wait-token)サービス統合パターンを実行する `Task` の状態が含まれます。

```
{ 
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution.waitForTaskToken",
   "Arguments":{ 
      "Input":{
        "Comment": "Hello world!",
        "token": "{% $states.context.Task.Token %}"
       },
      "StateMachineArn":"arn:aws:states:{{region}}:{{account-id}}:stateMachine:HelloWorld",
      "Name":"ExecutionName"
   },
   "End":true
}
```

ネストされたワークフロー実行を、それを開始した親実行に関連付けるには、[Context オブジェクト](input-output-contextobject.md)からプルされた実行 ID を含む特別な名前のパラメータを渡します。ネストされた実行を開始するときは、`AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID` という名前のパラメータを使用します。で実行 ID を渡し、コンテキストオブジェクトの ID を参照します`$states.context.Execution.Id`。詳細については、「[Context オブジェクトへのアクセス](input-output-contextobject.md#contextobject-access)」を参照してください。

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

 ネストされたステートマシンは、以下を返します。


| [リソース]  | Output | 
| --- | --- | 
| startExecution.sync | String | 
| startExecution.sync:2 | JSON | 

どちらもネストされたステートマシンが完了するのを待機しますが、異なる `Output` 形式を返します。例えば、オブジェクト `{ "MyKey": "MyValue" }` を返す Lambda 関数を作成すると、次のレスポンスが得られます。

startExecution.sync の場合:

```
{
   {{<other fields>}}
   "Output": "{ \"MyKey\": \"MyValue\" }" 
}
```

startExecution.sync:2 の場合:

```
{
   {{<other fields>}} 
   "Output": {
      "MyKey": "MyValue"
   }
}
```

### ネストされたステートマシンの IAM アクセス許可の設定
<a name="nested-stepfunctions-iam-permissions"></a>

親ステートマシンは、ポーリングとイベントを使用して子ステートマシンが実行を完了したかどうかを判断します。ポーリングには `states:DescribeExecution` のアクセス許可が必要ですが、EventBridge 経由で Step Functions に送信されるイベントには `events:PutTargets`、`events:PutRule`、`events:DescribeRule` のアクセス許可が必要です。IAM ロールにこれらのアクセス許可がない場合、親ステートマシンが子ステートマシンの実行完了を認識するまで、遅延が発生する可能性があります。

1 つのネストされたワークフロー実行のために `StartExecution` を呼び出すステートマシンの場合は、そのステートマシンへの許可を制限する IIAM ポリシーを使用します。

## ネストされた Step Functions ワークフローを呼び出すための IAM ポリシー
<a name="stepfunctions-iam"></a>

1 つのネストされたワークフロー実行のために `StartExecution` を呼び出すステートマシンの場合は、そのステートマシンへの許可を制限する IIAM ポリシーを使用します。

****  

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

詳細については次を参照してください:
+ [サービスと Step Functions の統合](integrate-services.md)
+ [Step Functions でサービス API にパラメータを渡す](connect-parameters.md)
+ [実行中の実行から新しい AWS Step Functions ステートマシンを起動する](#connect-stepfunctions)

------
#### [ Synchronous ]<a name="sync-async-iam-policies"></a>

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "states:StartExecution"
            ],
            "Resource": [
                "arn:aws:states:{{us-east-1}}:{{123456789012}}:stateMachine:{{stateMachineName}}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "states:DescribeExecution",
                "states:StopExecution"
            ],
            "Resource": [
               "arn:aws:states:{{us-east-1}}:{{123456789012}}:execution:{{myStateMachineName}}:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
               "arn:aws:events:{{us-east-1}}:{{123456789012}}:rule/StepFunctionsGetEventsForStepFunctionsExecutionRule"
            ]
        }
    ]
}
```

------
#### [ Asynchronous ]

****  

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

------

**必要な ARN のタイプ**  
**Synchronous** に関するポリシーでは、`states:StartExecution` にステートマシン ARN が必要ですが、`states:DescribeExecution` と `states:StopExecution` には実行 ARN が必要であることに注意してください。  
誤って 3 つのアクションをすべて組み合わせた場合、JSON は有効ですが、IAM ポリシーは正しくありません。ポリシーが正しくないと、ワークフローの実行中にワークフローがスタックしたり、アクセスの問題が発生したりする可能性があります。

ネストされたワークフロー実行の詳細については、[Step Functions で Task 状態からワークフロー実行を開始する](concepts-nested-workflows.md) を参照してください。