AWS SAM을 사용하여 Step Functions 상태 시스템 만들기 - AWS Step Functions

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

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 application cd project-directory sam build # Step 3 - Deploy your application sam deploy --guided

사전 조건

이 가이드에서는 운영 AWS SAM CLI 체제용 설치의 단계를 완료했다고 가정합니다. 다음 작업을 수행했다고 가정합니다.

  1. AWS 계정을 만들었습니다.

  2. IAM권한을 구성했습니다.

  3. Homebrew를 설치했습니다. 참고: Homebrew는 Linux 및 macOS의 유일한 사전 조건입니다.

  4. 를 AWS SAM CLI 설치했습니다. 참고: 버전 0.52.0 이상이 설치되어 있는지 확인하십시오. sam --version 명령을 실행하여 설치되어 있는 버전을 확인할 수 있습니다.

1단계: 샘플 AWS SAM 애플리케이션 다운로드

실행할 명령:

sam init

화면에 표시되는 프롬프트에 따라 다음을 선택합니다.

  1. 템플릿: AWS 퀵 스타트 템플릿

  2. 언어: 파이썬, 루비, NodeJS, 고, 자바, 또는. NET

  3. 프로젝트 이름: (선택한 이름 - 기본값은 sam-app임)

  4. 빠른 시작 애플리케이션: 다단계 워크플로

무엇을 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 파일에서 상태 머신 정의 파일을 가리키는 다음 항목을 볼 수 있습니다.

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 상태 시스템이 성공적으로 배포되었는지 확인할 수 있습니다.

  1. 에 AWS Management Console 로그인하고 에서 Step Functions 콘솔을 엽니다 https://console.aws.amazon.com/states/.

  2. 왼쪽 탐색 창에서 상태 머신을 선택합니다.

  3. 목록에서 새 상태 머신을 찾아 선택합니다. 이름은 StockTradingStateMachine -로 지정됩니다.<unique-hash>.

  4. 정의 탭을 선택합니다.

이제 상태 머신의 시각적 표현을 볼 수 있습니다. 시각적 표현이 프로젝트 디렉터리의 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삭제하려면 다음 단계를 따르십시오.

  1. https://console.aws.amazon.com/cloudformation 에서 AWS Management Console 로그인하고 AWS CloudFormation 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 스택을 선택합니다.

  3. 스택 목록에서 sam-app(또는 생성한 스택의 이름)을 선택합니다.

  4. Delete(삭제)를 선택합니다.

완료되면 스택 상태가 DELETE_로 변경됩니다COMPLETE.

또는 다음 AWS CLI 명령을 실행하여 AWS CloudFormation 스택을 삭제할 수 있습니다.

aws cloudformation delete-stack --stack-name sam-app --region region

삭제된 스택 확인

AWS CloudFormation 스택을 삭제하는 두 방법 모두 https://console.aws.amazon.com/cloudformation 으로 이동하여 왼쪽 탐색 창에서 스택을 선택한 다음 검색 텍스트 상자 오른쪽에 있는 드롭다운에서 삭제를 선택하여 스택이 삭제되었는지 확인할 수 있습니다. 삭제된 스택 목록에 스택 이름 sam-app(또는 생성한 스택의 이름)이 표시되어야 합니다.