

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

# AWS Step Functions 작업 참조 호출
<a name="action-reference-StepFunctions"></a>

다음을 수행하는 AWS CodePipeline 작업입니다.
+ 파이프라인에서 AWS Step Functions 상태 시스템 실행을 시작합니다.
+ 작업 구성의 속성이나 입력으로 전달할 파이프라인 아티팩트에 있는 파일을 통해 상태 시스템에 초기 상태를 제공합니다.
+ 선택적으로 작업에서 시작된 실행을 식별하기 위한 실행 ID 접두사를 설정합니다.
+ [Standard 및 Express](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html) 상태 시스템을 지원합니다.

**참고**  
Step Functions 작업은 Lambda에서 실행되므로 Lambda 함수에 대한 아티팩트 크기 할당량과 동일한 아티팩트 크기 할당량이 있습니다. 자세한 내용은 Lambda 개발자 안내서에서 [Lambda 할당량](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html)을 참조하세요.

## 작업 유형
<a name="action-reference-StepFunctions-type"></a>
+ 범주: `Invoke`
+ 소유자: `AWS`
+ 공급자: `StepFunctions`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-StepFunctions-config"></a>

**StateMachineArn**  
필수 항목 여부: 예  
호출할 상태 시스템의 Amazon 리소스 이름(ARN)입니다.

**ExecutionNamePrefix**  
필수 여부: 아니요  
기본적으로 작업 실행 ID는 상태 시스템 실행 이름으로 사용됩니다. 접두사가 제공되면 작업 실행 ID 앞에 하이픈이 추가되고 상태 시스템 실행 이름으로 함께 사용됩니다.  

```
myPrefix-1624a1d1-3699-43f0-8e1e-6bafd7fde791
```
express 상태 시스템의 경우 이름에는 0-9, A-Z, a-z, - 및 \$1만 포함해야 합니다.

**InputType**  
필수 여부: 아니요  
+ **리터럴**(기본값): 지정되면 **입력** 필드의 값이 상태 시스템 입력으로 직접 전달됩니다.

  **리터럴**을 선택한 경우의 **입력** 필드 예제 항목:

  ```
  {"action": "test"}
  ```
+ **FilePath**: **입력** 필드에 의해 지정된 입력 아티팩트의 파일 내용은 상태 시스템 실행을 위한 입력으로 사용됩니다. **InputType**이 **FilePath**로 설정된 경우 입력 아티팩트가 필요합니다.

  **파일 경로**를 선택한 경우의 **입력** 필드 예제 항목:

  ```
  assets/input.json
  ```

**Input**  
필수 항목 여부: 조건부  
+ **Literal**: **InputType**이 **리터럴**(기본값)로 설정된 경우 이 필드는 선택 사항입니다.

  제공되는 경우 **입력** 필드는 상태 시스템 실행의 입력으로 직접 사용됩니다. 그렇지 않으면 상태 시스템이 빈 JSON 객체 `{}`로 호출됩니다.
+ **FilePath**: **InputType**이 **FilePath**로 설정된 경우 이 필드는 필수입니다.

  **InputType**이 **FilePath**로 설정된 경우에도 입력 아티팩트가 필요합니다.

  지정된 입력 아티팩트의 파일 내용은 상태 시스템 실행을 위한 입력으로 사용됩니다.

## 입력 아티팩트
<a name="action-reference-StepFunctions-input"></a>
+ **아티팩트 수:** `0 to 1`
+ **설명:** **InputType**이 **FilePath**로 설정된 경우 이 아티팩트는 필수 항목이며 상태 시스템 실행을 위해 입력을 소스 지정하는 데 사용됩니다.

## 출력 아티팩트
<a name="action-reference-StepFunctions-output"></a>
+ **아티팩트 수:** `0 to 1` 
+ **설명:**
  + **Standard 상태 시스템**: 제공되는 경우 출력 아티팩트가 상태 시스템의 출력으로 채워집니다. 이는 상태 머신 실행이 성공적으로 완료된 후 [Step Functions DescribeExecution API](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html) 응답의 `output` 속성에서 가져옵니다.
  + **Express 상태 시스템**: 지원되지 않습니다.

## 출력 변수
<a name="action-reference-StepFunctions-variables"></a>

이 작업은 파이프라인에서 다운스트림 작업의 작업 구성에서 참조할 수 있는 출력 변수를 생성합니다.

자세한 내용은 [변수 참조](reference-variables.md) 단원을 참조하십시오.

**StateMachineArn**  
상태 시스템의 ARN입니다.

**ExecutionArn**  
상태 시스템 실행의 ARN입니다. Standard 상태 시스템에만 해당됩니다.

## 서비스 역할 권한: `StepFunctions` 작업
<a name="edit-role-stepfunctions"></a>

`StepFunctions` 작업의 경우 Step Functions 호출 작업을 통해 파이프라인을 만드는 데 필요한 최소 권한은 다음과 같습니다.

```
{
    "Effect": "Allow",
    "Action": [
        "states:DescribeStateMachine",
        "states:DescribeExecution",
        "states:StartExecution"
    ],
    "Resource": "resource_ARN"
},
```

## 예제 작업 구성
<a name="action-reference-StepFunctions-example"></a>

### 기본 입력의 예
<a name="action-reference-StepFunctions-example-default"></a>

------
#### [ YAML ]

```
Name: ActionName
ActionTypeId:
  Category: Invoke
  Owner: AWS
  Version: 1
  Provider: StepFunctions
OutputArtifacts:
  - Name: myOutputArtifact
Configuration:
  StateMachineArn: arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine
  ExecutionNamePrefix: my-prefix
```

------
#### [ JSON ]

```
{
    "Name": "ActionName",
    "ActionTypeId": {
        "Category": "Invoke",
        "Owner": "AWS",
        "Version": 1,
        "Provider": "StepFunctions"
    },
    "OutputArtifacts": [
        {
            "Name": "myOutputArtifact"
        }
    ],
    "Configuration": {
        "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine",
        "ExecutionNamePrefix": "my-prefix"
    }
}
```

------

### 리터럴 입력의 예
<a name="action-reference-StepFunctions-example-literal"></a>

------
#### [ YAML ]

```
Name: ActionName
ActionTypeId:
  Category: Invoke
  Owner: AWS
  Version: 1
  Provider: StepFunctions
OutputArtifacts:
  - Name: myOutputArtifact
Configuration:
  StateMachineArn: arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine
  ExecutionNamePrefix: my-prefix
  Input: '{"action": "test"}'
```

------
#### [ JSON ]

```
{
    "Name": "ActionName",
    "ActionTypeId": {
        "Category": "Invoke",
        "Owner": "AWS",
        "Version": 1,
        "Provider": "StepFunctions"
    },
    "OutputArtifacts": [
        {
            "Name": "myOutputArtifact"
        }
    ],
    "Configuration": {
        "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine",
        "ExecutionNamePrefix": "my-prefix",
        "Input": "{\"action\": \"test\"}"
    }
}
```

------

### 입력 파일의 예
<a name="action-reference-StepFunctions-example-filepath"></a>

------
#### [ YAML ]

```
Name: ActionName
InputArtifacts:
  - Name: myInputArtifact
ActionTypeId:
  Category: Invoke
  Owner: AWS
  Version: 1
  Provider: StepFunctions
OutputArtifacts:
  - Name: myOutputArtifact
Configuration:
  StateMachineArn: 'arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine'
  ExecutionNamePrefix: my-prefix
  InputType: FilePath
  Input: assets/input.json
```

------
#### [ JSON ]

```
{
    "Name": "ActionName",
    "InputArtifacts": [
        {
            "Name": "myInputArtifact"
        }
    ],
    "ActionTypeId": {
        "Category": "Invoke",
        "Owner": "AWS",
        "Version": 1,
        "Provider": "StepFunctions"
    },
    "OutputArtifacts": [
        {
            "Name": "myOutputArtifact"
        }
    ],
    "Configuration": {
        "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine",
        "ExecutionNamePrefix": "my-prefix",
        "InputType": "FilePath",
        "Input": "assets/input.json"
    }
}
```

------

## 동작
<a name="action-reference-StepFunctions-types"></a>

릴리스 중에 CodePipeline은 작업 구성에 지정된 입력을 사용하여 구성된 상태 시스템을 실행합니다.

**InputType**이 **Literal**로 설정된 경우 **입력** 작업 구성 필드의 내용이 상태 시스템의 입력으로 사용됩니다. 리터럴 입력이 제공되지 않으면 상태 시스템 실행은 빈 JSON 객체 `{}`를 사용합니다. 입력 없이 상태 시스템 실행을 실행하는 방법에 대한 자세한 내용은 [Step Functions StartExecution API](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)를 참조하십시오.

**InputType**이 **FilePath**로 설정된 경우 작업은 입력 아티팩트의 압축을 풀고 **입력** 작업 구성 필드에 지정된 파일의 내용을 상태 시스템의 입력으로 사용합니다. **FilePath**를 지정하면 **입력** 필드가 필요하며 입력 아티팩트가 있어야 합니다. 그렇지 않으면 작업이 실패합니다.

성공적인 시작 실행 후, 동작은 두 가지 상태 시스템 유형인 *standard* 및 *express*에 대해 분기됩니다.

### Standard 상태 시스템
<a name="action-reference-StepFunctions-types-standard"></a>

Standard 상태 시스템 실행이 성공적으로 시작되면 실행이 터미널 상태에 도달할 때까지 CodePipeline이 `DescribeExecution` API를 폴링합니다. 실행이 성공적으로 완료되면 작업이 성공하고 그렇지 않으면 실패합니다.

출력 아티팩트가 구성되면 아티팩트는 상태 시스템의 반환 값을 포함합니다. 이는 상태 머신 실행이 성공적으로 완료된 후 [Step Functions DescribeExecution API](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html) 응답의 `output` 속성에서 가져옵니다. 이 API에는 출력 길이 제약 조건이 적용됩니다.

#### 오류 처리
<a name="action-reference-StepFunctions-types-standard-handling"></a>
+ 작업이 상태 시스템 실행을 시작하지 못하면 작업 실행이 실패합니다.
+ CodePipeline Step Functions 작업이 제한 시간(기본값: 7일)에 도달하기 전에 상태 시스템 실행이 터미널 상태에 도달하지 못하면 작업 실행이 실패합니다. 이렇게 실패해도 상태 시스템이 계속될 수 있습니다. Step Functions의 상태 시스템 실행 제한 시간에 대한 자세한 내용은 [표준 워크플로와 Express 워크플로 비교](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html)를 참조하세요.
**참고**  
작업이 있는 계정의 호출 작업 시간 제한에 대한 할당량 증가를 요청할 수 있습니다. 그러나 할당량 증가는 해당 계정의 모든 리전에서 이 유형의 모든 작업에 적용됩니다.
+ 상태 시스템 실행이 FAILED, TIMED\$1OUT 또는 ABORTED 터미널 상태에 도달하면 작업 실행이 실패합니다.

### Express 상태 시스템
<a name="action-reference-StepFunctions-types-express"></a>

express 상태 시스템 실행이 성공적으로 시작되면 invoke 작업 실행이 성공적으로 완료됩니다.

express 상태 시스템에 대해 구성된 작업에 대한 고려 사항:
+ 출력 아티팩트를 지정할 수 없습니다.
+ 작업은 상태 시스템 실행이 완료될 때까지 기다리지 않습니다.
+ CodePipeline에서 작업 실행이 시작되면 상태 시스템 실행이 실패하더라도 작업 실행이 성공합니다.

#### 오류 처리
<a name="action-reference-StepFunctions-types-express-handling"></a>
+ CodePipeline이 상태 시스템 실행을 시작하지 못하면 작업 실행이 실패합니다. 그렇지 않으면 작업이 즉시 성공합니다. 작업은 상태 시스템 실행이 완료되는 데 걸리는 시간이나 결과에 관계없이 CodePipeline에서 성공합니다.

## 다음 사항도 참조하세요.
<a name="action-reference-StepFunctions-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ [AWS Step Functions 개발자 안내서](https://docs.aws.amazon.com/step-functions/latest/dg/) - 상태 시스템, 실행 및 상태 시스템 입력에 대한 자세한 내용은 *AWS Step Functions 개발자 안내서*를 참조하세요.
+ [자습서: 파이프라인에서 AWS Step Functions 호출 작업 사용](tutorials-step-functions.md) - 이 자습서에서는 샘플 standard 상태 시스템으로 시작하고 콘솔을 사용하여 Step Functions 간접 호출 작업을 추가하여 파이프라인을 업데이트하는 방법을 보여줍니다.