

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

# Step Functions의 서비스 API에 파라미터 전달
<a name="connect-parameters"></a>

**상태 관리 및 데이터 트랜스포밍**  
[변수를 사용하여 상태 간 데이터 전달](workflow-variables.md)과 [JSONata를 사용하여 데이터 트랜스포밍](transforming-data.md)에 대해 알아봅니다.

`Parameters` 상태의 `Task` 필드를 사용하여 서비스 API로 전달할 파라미터를 제어합니다.

`Parameters` 필드 내에서는 API 작업에 배열 파라미터 복수형을 사용해야 합니다. 예를 들어 Amazon EC2와 통합을 위해 `DescribeSnapshots` API 작업의 [필터](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSnapshots.html#API_DescribeSnapshots_RequestParameters) 필드를 사용하는 경우 필드를 `Filters`로 정의해야 합니다. 복수형을 사용하지 않으면 Step Functions에서 다음과 같은 오류를 반환합니다.

```
The field Filter is not supported by Step Functions.
```

## 정적 JSON을 파라미터로 전달
<a name="connect-parameters-json"></a>

상태 머신 정의에 JSON 객체를 직접 포함시켜 파라미터로 리소스에 전달할 수 있습니다.

예를 들어 `RetryStrategy`에 대한 `SubmitJob` API의 AWS Batch 파라미터를 설정하려면 파라미터에 다음을 포함시킬 수 있습니다.

```
"RetryStrategy": {
  "attempts": 5
}
```

정적 JSON이 포함된 여러 개의 파라미터를 전달할 수 있습니다. 보다 완벽한 예제로서 다음은 `myTopic`이라는 Amazon SNS 주제에 게시하는 작업의 사양에 대한 `Resource` 및 `Parameters` 필드입니다.

```
"Resource": "arn:aws:states:::sns:publish",
  "Parameters": {
     "TopicArn": "arn:aws:sns:us-east-2:account-id:myTopic",
     "Message": "test message",
     "MessageAttributes": {
       "my attribute no 1": {
         "DataType": "String",
         "StringValue": "value of my attribute no 1"
       },
       "my attribute no 2": {
         "DataType": "String",
         "StringValue": "value of my attribute no 2"
       }
     }
  },
```

## Path를 사용하여 상태 입력을 파라미터로 전달
<a name="connect-parameters-path"></a>

[Path](amazon-states-language-paths.md)를 사용하여 상태 입력의 일부분을 파라미터로 전달할 수 있습니다. 경로는 `$`로 시작하는 문자열이며 JSON 텍스트 내에서 구성 요소를 식별하는 데 사용됩니다. Step Functions 경로는 [JsonPath](https://datatracker.ietf.org/wg/jsonpath/about/) 구문을 사용합니다.

파라미터에서 경로를 사용하도록 지정하려면 파라미터 이름을 `.$`로 끝냅니다. 예를 들어 상태 입력에서 `message`라는 노드 내의 텍스트를 포함한 경우 경로를 사용하여 해당 텍스트를 파라미터로 전달할 수 있습니다.

다음 상태 입력을 고려하세요.

```
{
  "comment": "A message in the state input",
  "input": {
    "message": "foo",
    "otherInfo": "bar"
  },
  "data": "example"
}
```

`message`라는 노드의 값을 `myMessage`라는 파라미터로 전달하려면 다음 구문을 지정합니다.

```
"Parameters": {"myMessage.$": "$.input.message"},
```

그러면 Step Functions에서 `foo` 값을 파라미터로 전달합니다.

Step Functions에서 파라미터 사용에 대한 자세한 내용은 다음을 참조하세요.
+ [입력 및 출력 처리](concepts-input-output-filtering.md)
+ [Step Functions 워크플로의 파라미터를 사용하여 파라미터 조작](input-output-inputpath-params.md)

## 파라미터로서 Pass 컨텍스트 객체 노드
<a name="connect-parameters-context"></a>

정적 콘텐츠 및 정적 입력의 노드 외에도 컨텍스트 객체의 노드를 파라미터로 전달할 수 있습니다. 컨텍스트 객체는 상태 머신 실행 중에 존재하는 동적 JSON 데이터입니다. 여기에는 상태 머신과 현재 실행에 대한 정보가 포함됩니다. 상태 정의의 `Parameters` 필드에서 경로를 사용하여 컨텍스트 객체에 액세스할 수 있습니다.



컨텍스트 객체와 `"Parameters"` 필드에서 해당 데이터에 액세스하는 방법에 대한 자세한 내용은 다음을 참조하세요.
+ [Step Functions의 컨텍스트 객체에서 실행 데이터 액세스](input-output-contextobject.md)
+ [컨텍스트 객체 액세스](input-output-contextobject.md#contextobject-access)
+ [컨텍스트 객체에서 토큰 가져오기](connect-to-resource.md#wait-token-contextobject)