

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

# Step Functions Local을 사용하여 상태 머신 테스트(지원되지 않음)
<a name="sfn-local"></a>

**Step Functions Local은 지원되지 않습니다.**  
Step Functions Local은 기능 패리티를 제공하지 **않으며** 이는 **지원되지 않습니다**.  
테스트 목적으로 Step Functions를 에뮬레이션하는 서드 파티 솔루션을 고려할 수 있습니다.  
Step Functions Local의 대안으로 TestState API를 사용하여 AWS 계정에 배포하기 전에 상태 시스템 로직을 단위 테스트할 수 있습니다. 자세한 내용은 [ TestState API를 사용하여 상태 시스템 테스트를](https://docs.aws.amazon.com/step-functions/latest/dg/test-state-isolation.html) 참조하세요.

다운로드 가능한 AWS 버전의 Step Functions인 Step Functions Local을 사용하면 자체 개발 환경에서 실행되는 Step Functions로 애플리케이션을 테스트할 수 있습니다.



Step Functions Local을 실행할 때 다음 방법 중 하나를 사용하여 서비스 통합을 간접적으로 호출할 수 있습니다.
+  AWS Lambda 및 기타 서비스에 대한 로컬 엔드포인트 구성.
+ Step Functions Local에서 AWS 서비스에 직접 호출합니다.
+ 서비스 통합의 응답 모의.

AWS Step Functions Local은 JAR 패키지 또는 Microsoft Windows, Linux, macOS 및 Java 또는 Docker를 지원하는 기타 플랫폼에서 실행되는 독립형 Docker 이미지로 사용할 수 있습니다.

**주의**  
Step Functions Local은 테스트에만 사용해야 하며 민감한 정보를 처리해서는 안 됩니다.

**Topics**
+ [Step Functions Local 및 Docker 설정](#sfn-local-docker)
+ [Step Functions Local 설정 - Java 버전](#sfn-local-jar)
+ [Step Functions Local 옵션 구성](#sfn-local-config-options)
+ [Step Functions Local 실행](#sfn-local-computer)
+ [자습서: Step Functions 및 AWS SAM CLI Local을 사용한 테스트](sfn-local-lambda.md)
+ [모의 서비스 통합을 사용한 테스트](sfn-local-test-sm-exec.md)

## Docker에서 Step Functions Local(다운로드 가능 버전) 설정
<a name="sfn-local-docker"></a>

Step Functions Local 도커 이미지를 사용하면 필요한 모든 종속성과 함께 도커 이미지를 사용하여 Step Functions Local을 빠르게 시작할 수 있습니다. 도커 이미지를 사용하면 Step Functions Local을 컨테이너화된 빌드에 지속적 통합 테스트의 일부로 포함할 수 있습니다.

Step Functions Local에 대한 도커 이미지를 가져오려면 [https://hub.docker.com/r/amazon/aws-stepfunctions-local](https://hub.docker.com/r/amazon/aws-stepfunctions-local)을 참조하거나 다음 Docker `pull` 명령을 입력합니다.

```
docker pull amazon/aws-stepfunctions-local
```

Docker에서 Step Functions의 다운로드 가능 버전을 시작하려면 다음 Docker `run` 명령을 실행합니다.

```
docker run -p 8083:8083 amazon/aws-stepfunctions-local
```

 AWS Lambda 또는 기타 지원되는 서비스와 상호 작용하려면 먼저 자격 증명 및 기타 구성 옵션을 구성해야 합니다. 자세한 내용은 다음 항목을 참조하세요.
+ [Step Functions Local의 구성 옵션 설정](#sfn-local-config-options)
+ [Docker에 대한 보안 인증 정보 및 구성](#docker-credentials)

## Step Functions Local(다운로드 가능 버전) 설정 - Java 버전
<a name="sfn-local-jar"></a>

의 다운로드 가능한 버전 AWS Step Functions 은 실행 가능한 JAR 파일 및 도커 이미지로 제공됩니다. Java 애플리케이션은 Windows, Linux, macOS 및 Java를 지원하는 기타 플랫폼에서 실행됩니다. Java 외에도 AWS Command Line Interface ()를 설치해야 합니다AWS CLI. 설치 및 구성에 대한 자세한 내용은 [AWS Command Line Interface 사용 설명서를](https://docs.aws.amazon.com/cli/latest/userguide/) AWS CLI참조하세요.

**컴퓨터에 Step Functions를 설정하고 실행하기**

1. 다음 링크를 사용하여 Step Functions를 다운로드합니다.    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/step-functions/latest/dg/sfn-local.html)

1. `.zip` 파일의 압축을 풉니다.

1. 다운로드를 테스트하고 버전 정보를 봅니다.

   ```
   $ java -jar StepFunctionsLocal.jar -v
   Step Function Local
   Version: 2.0.0
   Build: 2024-05-18
   ```

1. (선택 사항) 사용 가능한 명령 목록을 봅니다.

   ```
   $ java -jar StepFunctionsLocal.jar -h
   ```

1. 컴퓨터에서 Step Functions를 시작하려면 명령 프롬프트를 열고 `StepFunctionsLocal.jar` 압축을 해제한 디렉터리로 이동한 후 다음 명령을 입력합니다.

   ```
   java -jar StepFunctionsLocal.jar
   ```

1. 로컬에서 실행되는 Step Functions에 액세스하려면 `--endpoint-url` 파라미터를 사용합니다. 예를 들어를 사용하여 Step Functions 명령을 다음과 같이 AWS CLI지정합니다.

   ```
   aws stepfunctions --endpoint-url http://localhost:8083 {{command}}
   ```

**참고**  
기본적으로 Step Functions Local은 로컬 테스트 계정과 보안 인증 정보를 사용하며 AWS 리전은 미국 동부(버지니아 북부)로 설정됩니다. AWS Lambda또는 기타 지원되는 서비스와 함께 Step Functions Local을 사용하려면 자격 증명 및 리전을 구성해야 합니다.  
Step Functions Local에서 Express 워크플로를 사용하면 실행 내역이 로그 파일에 저장됩니다. CloudWatch Logs에는 로깅되지 않습니다. 로그 파일 경로는 로컬 상태 머신을 만들 때 제공된 CloudWatch Logs 로그 그룹 ARN을 기반으로 합니다. 로그 파일은 Step Functions Local을 실행하는 위치를 기준으로 `/aws/states/log-group-name/{{${execution_arn}}}.log`에 저장됩니다. 예를 들어 실행 ARN이 다음과 같은 경우  

```
arn:aws:states:{{region}}:{{account-id}}:express:test:example-ExpressLogGroup-wJalrXUtnFEMI
```
로그 파일은 다음과 같습니다.  

```
aws/states/log-group-name/arn:aws:states:{{region}}:{{account-id}}:express:test:example-ExpressLogGroup-wJalrXUtnFEMI.log
```

## Step Functions Local의 구성 옵션 설정
<a name="sfn-local-config-options"></a>

JAR 파일을 사용하여 AWS Step Functions Local을 시작할 때 AWS Command Line Interface (AWS CLI)를 사용하거나 시스템 환경에 포함시켜 구성 옵션을 설정할 수 있습니다. Docker의 경우 Step Functions Local을 시작할 때 참조하는 파일에 이러한 옵션을 지정해야 합니다.

### 구성 옵션
<a name="sfn-local-config-options-table"></a>

Lambda 엔드포인트 및 배치 엔드포인트와 같은 재정의 엔드포인트를 사용하도록 Step Functions Local 컨테이너를 구성하고 해당 엔드포인트를 직접적으로 호출하면 Step Functions Local에서 지정된 [보안 인증 정보](#docker-credentials)를 사용하지 않습니다. 이러한 엔드포인트 재정의 설정은 선택 사항입니다.


| 옵션 | 명령줄 | 환경 | 
| --- | --- | --- | 
| Account | -account, --aws-account | AWS\_ACCOUNT\_ID | 
| 리전 | -region, --aws-region | AWS\_DEFAULT\_REGION | 
| 대기 시간 비율 | -waitTimeScale, --wait-time-scale | WAIT\_TIME\_SCALE | 
| Lambda 엔드포인트 | -lambdaEndpoint, --lambda-endpoint | LAMBDA\_ENDPOINT | 
| 배치 엔드포인트 | -batchEndpoint, --batch-endpoint | BATCH\_ENDPOINT | 
| DynamoDB 엔드포인트 | -dynamoDBEndpoint, --dynamodb-endpoint | DYNAMODB\_ENDPOINT | 
| ECS 엔드포인트  | -ecsEndpoint, --ecs-endpoint | ECS\_ENDPOINT | 
| Glue 엔드포인트 | -glueEndpoint, --glue-endpoint | GLUE\_ENDPOINT | 
| SageMaker 엔드포인트 | -sageMakerEndpoint, --sagemaker-endpoint | SAGE\_MAKER\_ENDPOINT | 
| SQS 엔드포인트 | -sqsEndpoint, --sqs-endpoint | SQS\_ENDPOINT | 
| SNS 엔드포인트 | -snsEndpoint, --sns-endpoint | SNS\_ENDPOINT | 
| Step Functions 엔드포인트 | -stepFunctionsEndpoint, --step-functions-endpoint | STEP\_FUNCTIONS\_ENDPOINT | 

### Docker에 대한 보안 인증 정보 및 구성
<a name="docker-credentials"></a>

Docker용 Step Functions Local을 구성하려면 `aws-stepfunctions-local-credentials.txt` 파일을 만듭니다.

이 파일에는 보안 인증 정보와 기타 구성 옵션이 포함됩니다. 다음은 `aws-stepfunctions-local-credentials.txt` 파일을 만들 때 템플릿으로 사용될 수 있습니다.

```
AWS_DEFAULT_REGION{{=AWS_REGION_OF_YOUR_AWS_RESOURCES}}
AWS_ACCESS_KEY_ID={{YOUR_AWS_ACCESS_KEY}}
AWS_SECRET_ACCESS_KEY={{YOUR_AWS_SECRET_KEY}}
WAIT_TIME_SCALE={{VALUE}}
LAMBDA_ENDPOINT={{VALUE}}
BATCH_ENDPOINT={{VALUE}}
DYNAMODB_ENDPOINT={{VALUE}}
ECS_ENDPOINT={{VALUE}}
GLUE_ENDPOINT={{VALUE}}
SAGE_MAKER_ENDPOINT={{VALUE}}
SQS_ENDPOINT={{VALUE}}
SNS_ENDPOINT={{VALUE}}
STEP_FUNCTIONS_ENDPOINT={{VALUE}}
```

`aws-stepfunctions-local-credentials.txt`에서 보안 인증 정보와 구성 옵션을 구성하면 다음 명령을 사용하여 Step Functions를 시작합니다.

```
docker run -p 8083:8083 --env-file aws-stepfunctions-local-credentials.txt amazon/aws-stepfunctions-local
```

**참고**  
 호스트에서 사용하는 내부 IP 주소(예: `http://host.docker.internal:8000`)로 확인되는 특수 DNS 이름 `host.docker.internal`을 사용하는 것이 좋습니다. 자세한 내용은 [Mac용 Docker Desktop의 네트워킹 기능](https://docs.docker.com/desktop/mac/networking/#use-cases-and-workaround) 및 [Windows용 Docker Desktop의 네트워킹 기능](https://docs.docker.com/desktop/windows/networking/)에서 Mac 및 Windows용 Docker 설명서를 참조하세요.

## 컴퓨터에서 Step Functions Local 실행
<a name="sfn-local-computer"></a>

로컬 버전의 Step Functions를 사용하여 컴퓨터에 상태 머신을 구성, 개발 및 테스트합니다.

### HelloWorld 상태 머신을 로컬로 실행
<a name="sfn-local-heloworld"></a>

 AWS Command Line Interface (AWS CLI)를 사용하여 Step Functions를 로컬에서 실행한 후 상태 시스템 실행을 시작할 수 있습니다.

1. 상태 시스템 정의를 이스케이프아웃 AWS CLI 하여에서 상태 시스템을 생성합니다.

   ```
   aws stepfunctions --endpoint-url http://localhost:8083 create-state-machine --definition "{\
     \"Comment\": \"A Hello World example of the Amazon States Language using a Pass state\",\
     \"StartAt\": \"HelloWorld\",\
     \"States\": {\
       \"HelloWorld\": {\
         \"Type\": \"Pass\",\
         \"End\": true\
       }\
     }}" --name "HelloWorld" --role-arn "arn:aws:iam::012345678901:role/DummyRole"
   ```
**참고**  
`role-arn`은 Step Functions Local에 사용되지 않지만 적절한 구문을 통해 포함되도록 해야 합니다. 이전 예제의 Amazon 리소스 이름(ARN)을 사용할 수 있습니다.

   상태 머신을 성공적으로 만들면 Step Functions는 생성 날짜와 상태 머신 ARN으로 응답합니다.

   ```
   {
       "creationDate": 1548454198.202, 
       "stateMachineArn": "arn:aws:states:{{region}}:{{account-id}}:stateMachine:HelloWorld"
   }
   ```

1. 생성한 상태 머신의 ARN을 사용하여 실행을 시작합니다.

   ```
   aws stepfunctions --endpoint-url http://localhost:8083 start-execution --state-machine-arn arn:aws:states:{{region}}:{{account-id}}:stateMachine:HelloWorld
   ```

### AWS SAM CLI Local을 사용한 Step Functions Local
<a name="with-lambda-local"></a>

로컬 버전의 AWS Lambda과 함께 로컬 버전의 Step Functions를 사용할 수 있습니다. 이를 구성하려면 AWS SAM을 설치하고 구성해야 합니다.

구성 및 실행에 대한 자세한 내용은 다음을 AWS SAM참조하세요.
+ [설정 AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-quick-start.html)
+ [AWS SAM CLI Local 시작](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-local-start-lambda.html)

로컬 시스템에서 Lambda가 실행되면 Step Functions Local을 시작할 수 있습니다. Step Functions 로컬 JAR 파일을 추출한 디렉터리에서 Step Functions Local을 시작하고 `--lambda-endpoint` 파라미터를 사용하여 로컬 Lambda 엔드포인트를 구성합니다.

```
java -jar StepFunctionsLocal.jar --lambda-endpoint http://127.0.0.1:3001 {{command}}
```

를 사용하여 Step Functions Local을 실행하는 방법에 대한 자세한 내용은 섹션을 AWS Lambda참조하세요[자습서: Step Functions 및 AWS SAM CLI Local을 사용하여 워크플로 테스트](sfn-local-lambda.md).