기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS SAM을 사용하여 Step Functions 상태 시스템 만들기
이 가이드에서는 AWS Step Functions 상태 머신이 포함된 샘플 AWS SAM 애플리케이션을 다운로드, 빌드 및 배포합니다. 이 애플리케이션은 사전 정의된 일정에 따라 실행되는 모의 주식 거래 워크플로를 생성합니다(요금이 부과되지 않도록 일정이 기본적으로 비활성화되어 있음).
다음 다이어그램은 이 애플리케이션의 구성 요소를 보여줍니다.

다음은 샘플 애플리케이션을 생성하기 위해 실행하는 명령의 미리 보기입니다. 이러한 각 명령에 대한 자세한 내용은 이 페이지의 뒷부분에 있는 섹션을 참조하십시오.
# Step 1 - Download a sample application. For this tutorial you # will follow the prompts to select an AWS Quick Start Template # called 'Multi-step workflow'
sam init
# Step 2 - Build your applicationcd
project-directory
sam build
# Step 3 - Deploy your applicationsam deploy --guided
사전 조건
이 가이드에서는 OS에 대해 AWS SAM CLI 설치 단계를 완료했다고 가정합니다. 다음 작업을 수행했다고 가정합니다.
-
AWS 계정을 만들었습니다.
-
IAM 권한을 구성했습니다.
-
Homebrew를 설치했습니다. 참고: Homebrew는 Linux 및 macOS의 유일한 사전 조건입니다.
-
AWS SAM CLI를 설치했습니다. 참고: 버전 0.52.0 이상이 설치되어 있는지 확인하십시오.
sam --version
명령을 실행하여 설치되어 있는 버전을 확인할 수 있습니다.
1단계: 샘플 AWS SAM 애플리케이션 다운로드
실행할 명령:
sam init
화면에 표시되는 프롬프트에 따라 다음을 선택합니다.
-
템플릿: AWS 빠른 시작 템플릿
-
언어: Python, Ruby, NodeJS, Go, Java 또는 .NET
-
프로젝트 이름: (선택한 이름 - 기본값은
sam-app
임) -
빠른 시작 애플리케이션: 다단계 워크플로
AWS SAM에서 수행 중인 작업:
이 명령은 '프로젝트 이름' 프롬프트에 제공한 이름으로 디렉터리를 생성합니다(기본값은 sam-app
). 구체적인 디렉터리 내용은 선택한 언어에 따라 다릅니다.
Python 런타임 중 하나를 선택할 때 디렉터리 내용은 다음과 같습니다.
├── README.md ├── functions │ ├── __init__.py │ ├── stock_buyer │ │ ├── __init__.py │ │ ├── app.py │ │ └── requirements.txt │ ├── stock_checker │ │ ├── __init__.py │ │ ├── app.py │ │ └── requirements.txt │ └── stock_seller │ ├── __init__.py │ ├── app.py │ └── requirements.txt ├── statemachine │ └── stock_trader.asl.json ├── template.yaml └── tests └── unit ├── __init__.py ├── test_buyer.py ├── test_checker.py └── test_seller.py
살펴볼 수 있는 두 가지 특히 흥미로운 파일이 있습니다.
-
template.yaml
: 애플리케이션의 AWS 리소스를 정의하는 AWS SAM 템플릿을 포함합니다. -
statemachine/stockTrader.asl.json
: Amazon States Language를 사용하여 Step Functions 워크플로 정의에 작성된 애플리케이션의 상태 머신 정의를 포함합니다.
template.yaml
파일에서 상태 머신 정의 파일을 가리키는 다음 항목을 볼 수 있습니다.
Properties: DefinitionUri: statemachine/stock_trader.asl.json
상태 시스템 정의를 AWS SAM 템플릿에 임베딩하는 대신 별도의 파일로 보관하는 것이 유용할 수 있습니다. 예를 들어 템플릿에 정의를 포함하지 않으면 상태 시스템 정의에 대한 변경 사항을 더 쉽게 추적할 수 있습니다. Workflow Studio를 사용하여 상태 시스템 정의를 생성 및 유지하고 정의를 템플릿에 병합하지 않고도 콘솔에서 Amazon States Language 사양 파일로 직접 내보낼 수 있습니다.
샘플 애플리케이션에 대한 자세한 내용은 프로젝트 디렉터리의 README.md
파일을 참조하십시오.
2단계: 애플리케이션 빌드
실행할 명령:
먼저 프로젝트 디렉터리(예: 샘플 애플리케이션의 template.yaml
파일이 있는 디렉터리, 기본값은 sam-app
임)로 변경한 후 다음 명령을 실행합니다.
sam build
출력 예제:
Build Succeeded Built Artifacts : .aws-sam/build Built Template : .aws-sam/build/template.yaml Commands you can use next ========================= [*] Invoke Function: sam local invoke [*] Deploy: sam deploy --guided
AWS SAM에서 수행 중인 작업:
AWS SAM CLI는 종속성을 빌드하기 위해 여러 Lambda 런타임에 대한 추상화를 제공하며 모든 항목이 패키징되고 배포될 수 있도록 모든 빌드 아티팩트를 스테이징 폴더에 복사합니다. 이 sam build
명령은 애플리케이션에 있는 모든 종속성을 빌드하고 빌드 아티팩트를 .aws-sam/build
아래의 폴더에 복사합니다.
3단계: AWS 클라우드에 애플리케이션 배포
실행할 명령:
sam deploy --guided
화면에 표시되는 프롬프트를 따릅니다. 대화형 환경에서 제공되는 기본 옵션을 수락하려면 Enter
로 응답하면 됩니다.
AWS SAM에서 수행 중인 작업:
이 명령은 애플리케이션을 AWS 클라우드에 배포합니다. sam build
명령으로 빌드한 배포 아티팩트를 가져와서 패키징하고 AWS SAM CLI에서 만든 Amazon S3 버킷에 업로드하고 AWS CloudFormation을 사용하여 애플리케이션을 배포합니다. 배포 명령의 출력에서 AWS CloudFormation 스택에 대한 변경 사항을 볼 수 있습니다.
다음 단계를 수행하면 예제 Step Functions 상태 시스템이 성공적으로 배포되었는지 확인할 수 있습니다.
AWS Management Console에 로그인하고 https://console.aws.amazon.com/states/
에서 Step Functions 콘솔을 엽니다. -
왼쪽 탐색 창에서 상태 머신을 선택합니다.
-
목록에서 새 상태 머신을 찾아 선택합니다. 여기에는 StockTradingStateMachine-
<unique-hash>
라는 이름이 지정됩니다. -
정의 탭을 선택합니다.
이제 상태 머신의 시각적 표현을 볼 수 있습니다. 시각적 표현이 프로젝트 디렉터리의 statemachine/stockTrader.asl.json
파일에 있는 상태 머신 정의와 일치하는지 확인할 수 있습니다.
문제 해결
SAM CLI 오류: "해당 옵션 없음: --guided"
sam deploy
를 실행하면 다음 오류가 표시됩니다.
Error: no such option: --guided
즉, --guided
파라미터를 지원하지 않는 이전 버전의 AWS SAM CLI를 사용하고 있습니다. 이 문제를 해결하려면 AWS SAM CLI 버전을 0.33.0 이상으로 업데이트하거나 sam deploy
명령에서 --guided
파라미터를 생략하면 됩니다.
SAM CLI 오류: "관리형 리소스를 생성하지 못했습니다. 자격 증명을 찾을 수 없습니다.”
sam deploy
를 실행하면 다음 오류가 표시됩니다.
Error: Failed to create managed resources: Unable to locate credentials
즉, AWS SAM CLI에서 AWS 서비스를 직접적으로 호출할 수 있도록 AWS 보안 인증 정보를 설정하지 않았습니다. 이 문제를 해결하려면 AWS 보안 인증 정보를 설정해야 합니다. 자세한 내용은 AWS Serverless Application Model 개발자 안내서의 AWS 보안 인증 정보 설정 섹션을 참조하세요.
정리
이 자습서를 실행하여 만든 AWS 리소스가 더 이상 필요하지 않은 경우 배포한 AWS CloudFormation 스택을 삭제하여 리소스를 제거할 수 있습니다.
AWS Management Console을 사용하여 이 자습서에서 생성한 AWS CloudFormation 스택을 삭제하려면 다음 단계를 수행합니다.
AWS Management Console에 로그인하여 https://console.aws.amazon.com/cloudformation
에서 AWS CloudFormation 콘솔을 엽니다. -
왼쪽 탐색 창에서 스택을 선택합니다.
-
스택 목록에서 sam-app(또는 생성한 스택의 이름)을 선택합니다.
-
Delete(삭제)를 선택합니다.
완료되면 스택의 상태가 DELETE_COMPLETE로 변경됩니다.
또는 다음 AWS CLI 명령을 실행하여 AWS CloudFormation 스택을 삭제할 수 있습니다.
aws cloudformation delete-stack --stack-name
sam-app
--regionregion
삭제된 스택 확인
AWS CloudFormation 스택을 삭제하는 두 가지 방법 모두에서 https://console.aws.amazon.com/cloudformation