기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS SAM을 사용하여 Step Functions 상태 시스템 만들기
이 가이드에서는 AWS Step Functions 상태 머신이 포함된 샘플 AWS SAM 애플리케이션을 다운로드, 빌드 및 배포합니다. 이 애플리케이션은 사전 정의된 일정에 따라 실행되는 모의 주식 거래 워크플로를 생성합니다(요금이 부과되지 않도록 일정이 기본적으로 비활성화되어 있음).
다음 다이어그램은 이 애플리케이션의 구성 요소를 보여줍니다.
![이 자습서의 워크플로를 보여주는 다이어그램.](images/sam-starter-template-docs.png)
다음은 샘플 애플리케이션을 생성하기 위해 실행하는 명령의 미리 보기입니다. 이러한 각 명령에 대한 자세한 내용은 이 페이지의 뒷부분에 있는 섹션을 참조하십시오.
# 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
사전 조건
이 가이드에서는 운영 AWS SAM CLI 체제용 설치의 단계를 완료했다고 가정합니다. 다음 작업을 수행했다고 가정합니다.
-
AWS 계정을 만들었습니다.
-
IAM권한을 구성했습니다.
-
Homebrew를 설치했습니다. 참고: Homebrew는 Linux 및 macOS의 유일한 사전 조건입니다.
-
를 AWS SAM CLI 설치했습니다. 참고: 버전 0.52.0 이상이 설치되어 있는지 확인하십시오.
sam --version
명령을 실행하여 설치되어 있는 버전을 확인할 수 있습니다.
1단계: 샘플 AWS SAM 애플리케이션 다운로드
실행할 명령:
sam init
화면에 표시되는 프롬프트에 따라 다음을 선택합니다.
-
템플릿: AWS 퀵 스타트 템플릿
-
언어: 파이썬, 루비, NodeJS, 고, 자바, 또는. 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 언어를 사용하여 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
명령으로 빌드한 배포 아티팩트를 가져와 에서 생성한 Amazon S3 버킷으로 패키징하고 업로드한 AWS SAM CLI 다음 를 사용하여 애플리케이션을 배포합니다. AWS CloudFormation배포 명령의 출력에서 AWS CloudFormation
스택에 대한 변경 사항을 볼 수 있습니다.
다음 단계를 수행하면 예제 Step Functions 상태 시스템이 성공적으로 배포되었는지 확인할 수 있습니다.
에 AWS Management Console 로그인하고 에서 Step Functions 콘솔을 엽니다 https://console.aws.amazon.com/states/
. -
왼쪽 탐색 창에서 상태 머신을 선택합니다.
-
목록에서 새 상태 머신을 찾아 선택합니다. 이름은 StockTradingStateMachine -로 지정됩니다.
<unique-hash>
. -
정의 탭을 선택합니다.
이제 상태 머신의 시각적 표현을 볼 수 있습니다. 시각적 표현이 프로젝트 디렉터리의 statemachine/stockTrader.asl.json
파일에 있는 상태 머신 정의와 일치하는지 확인할 수 있습니다.
문제 해결
SAMCLI오류: “해당 옵션 없음: --guided”
sam deploy
를 실행하면 다음 오류가 표시됩니다.
Error: no such option: --guided
이는 --guided
파라미터를 지원하지 않는 이전 버전의 를 사용하고 AWS SAM CLI 있음을 의미합니다. 이 문제를 해결하려면 버전을 0.33.0 이상으로 AWS SAM CLI 업데이트하거나 명령에서 --guided
매개변수를 생략할 수 있습니다. sam deploy
SAMCLI오류: “관리 리소스 생성 실패: 자격 증명을 찾을 수 없습니다.”
sam deploy
를 실행하면 다음 오류가 표시됩니다.
Error: Failed to create managed resources: Unable to locate credentials
이는 에서 AWS 서비스를 호출할 수 있는 AWS 자격 증명을 설정하지 않았음을 의미합니다. AWS SAM CLI 이 문제를 해결하려면 AWS 자격 증명을 설정해야 합니다. 자세한 내용은 AWS Serverless Application Model 개발자 안내서의 AWS 자격 증명 설정을 참조하십시오.
정리
이 자습서를 실행하여 만든 AWS 리소스가 더 이상 필요하지 않은 경우 배포한 AWS CloudFormation 스택을 삭제하여 리소스를 제거할 수 있습니다.
를 사용하여 이 자습서에서 생성한 AWS CloudFormation 스택을 AWS Management Console삭제하려면 다음 단계를 따르십시오.
https://console.aws.amazon.com/cloudformation
에서 AWS Management Console 로그인하고 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