

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 실행 중인 실행에서 새 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) 통합 패턴을 사용할 수 있습니다.

자세한 내용은 다음을 참조하세요.
+ [작업에서 시작](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
}
```

중첩된 워크플로 실행을 시작한 상위 실행과 연결하려면 [컨텍스트 객체](input-output-contextobject.md)에서 가져온 실행 ID를 포함하는 특수하게 이름이 지정된 파라미터를 전달하세요. 중첩 실행을 시작할 때 `AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID`라는 매개 변수를 사용하십시오. 실행 ID를 전달하고를 사용하여 컨텍스트 객체의 ID를 참조합니다`$states.context.Execution.Id`. 자세한 내용은 [컨텍스트 객체 액세스](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
}
```

 중첩된 상태 머신은 다음을 반환합니다.


| Resource | 출력 | 
| --- | --- | 
| startExecution.sync | 문자열 | 
| 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 역할에서 이러한 권한이 누락되면 상위 상태 머신에서 하위 상태 머신 실행 완료를 인식할 때까지 지연이 발생할 수 있습니다.

단일 중첩 워크플로 실행을 위해 `StartExecution`을 직접적으로 호출하는 상태 머신의 경우 해당 상태 머신에 대한 권한을 제한하는 IAM 정책을 사용합니다.

## 중첩된 Step Functions 워크플로 호출을 위한 IAM 정책
<a name="stepfunctions-iam"></a>

단일 중첩 워크플로 실행을 위해 `StartExecution`을 직접적으로 호출하는 상태 머신의 경우 해당 상태 머신에 대한 권한을 제한하는 IAM 정책을 사용합니다.

****  

```
{
    "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 유형 필요**  
**동기식** 정책에서 `states:StartExecution`에는 상태 머신 ARN이 필요한 반면 `states:DescribeExecution` 및 `states:StopExecution`에는 실행 ARN이 필요합니다.  
실수로 세 작업을 모두 결합한 경우 JSON은 유효하지만 IAM 정책은 올바르지 않습니다. 정책이 올바르지 않으면 워크플로 실행 중에 워크플로 중단 및/또는 액세스 문제가 발생할 수 있습니다.

중첩된 워크플로 실행에 대한 자세한 내용은 [Step Functions의 작업 상태에서 워크플로 실행 시작](concepts-nested-workflows.md) 단원을 참조하십시오.