기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS SAM 를 사용하여 Step Functions 워크플로 빌드
Step Functions와 AWS Serverless Application Model 함께를 사용하여 워크플로를 구축하고 Lambda 함수, APIs 및 이벤트를 포함하여 필요한 인프라를 배포하여 서버리스 애플리케이션을 생성할 수 있습니다.
통합 환경의 AWS Toolkit for Visual Studio Code 일부로 AWS Serverless Application Model CLI를와 함께 사용하여 AWS Step Functions 상태 시스템을 빌드하고 배포할 수도 있습니다. AWS SAM을 사용하여 서버리스 애플리케이션을 빌드한 다음 VS Code IDE에서 상태 시스템을 빌드할 수 있습니다. 그런 다음 리소스를 검증, 패키징 및 배포할 수 있습니다.
작은 정보
를 사용하여 Step Functions 워크플로를 시작하는 샘플 서버리스 애플리케이션을 배포하려면 AWS Step Functions 워크숍의 를 사용하여 배포 AWS SAM
Step Functions를와 함께 사용하는 이유는 AWS SAM무엇입니까?
Step Functions를와 함께 사용하면 다음을 AWS SAM 수행할 수 있습니다.
-
AWS SAM 샘플 템플릿 사용을 시작합니다.
-
상태 머신을 서버리스 애플리케이션에 빌드합니다.
-
변수 대체를 사용하여 배포 시 ARN을 상태 시스템으로 대체합니다.
AWS CloudFormation은 CloudFormation 템플릿에 제공하는 값에 워크플로 정의의 동적 참조를 추가할 수 있도록
DefinitionSubstitutions
를 지원합니다.${dollar_sign_brace}
표기법으로 워크플로 정의에 대체 항목을 추가하여 동적 참조를 추가할 수 있습니다. 또한 CloudFormation 템플릿의 StateMachine 리소스에 대한DefinitionSubstitutions
속성에 이러한 동적 참조를 정의해야 합니다. CloudFormation 스택 생성 프로세스 중에 이러한 대체 값이 실제 값으로 대체됩니다. 자세한 내용은 AWS SAM 템플릿의 DefinitionSubstitutions 단원을 참조하십시오. -
AWS SAM 정책 템플릿을 사용하여 상태 시스템의 역할을 지정합니다.
-
API Gateway, EventBridge 이벤트 또는 AWS SAM 템플릿 내의 일정에 따라 상태 시스템 실행을 시작합니다.
AWS SAM 사양과 Step Functions 통합
AWS SAM 정책 템플릿을 사용하여 상태 시스템에 권한을 추가할 수 있습니다. 이러한 권한을 통해 Lambda 함수 및 기타 AWS 리소스를 오케스트레이션하여 복잡하고 강력한 워크플로를 구성할 수 있습니다.
Step Functions와 SAM CLI의 통합
Step Functions는 AWS SAM CLI와 통합됩니다. 이를 사용하여 상태 머신를 서버리스 애플리케이션으로 신속하게 개발합니다.
AWS SAM을 사용하여 Step Functions 상태 시스템 만들기 자습서를 사용하여 상태 시스템을 AWS SAM 생성하는 방법을 알아봅니다.
지원되는 AWS SAM CLI 함수는 다음과 같습니다.
CLI 명령 | 설명 |
---|---|
sam 이니트 |
AWS SAM 템플릿을 사용하여 서버리스 애플리케이션을 초기화합니다. Step Functions에 대해 SAM 템플릿과 함께 사용할 수 있습니다. |
sam validate | AWS SAM 템플릿을 검증합니다. |
sam package |
AWS SAM 애플리케이션을 패키징합니다. 코드와 종속성의 ZIP 파일을 만든 다음 Amazon S3에 업로드합니다. 그런 다음 로컬 아티팩트에 대한 참조를 명령이 아티팩트를 업로드한 Amazon S3 위치로 변경하여 AWS SAM 템플릿의 사본을 반환합니다. |
sam deploy | AWS SAM 애플리케이션을 배포합니다. |
sam publish |
에 AWS SAM 애플리케이션을 게시합니다 AWS Serverless Application Repository. 이 명령은 패키징된 AWS SAM 템플릿을 가져와 애플리케이션을 지정된 리전에 게시합니다. |
참고
AWS SAM 로컬을 사용하는 경우 Lambda 및 API Gateway를 로컬에서 에뮬레이션할 수 있습니다. 그러나를 사용하여 Step Functions를 로컬로 에뮬레이션할 수는 없습니다 AWS SAM.
AWS SAM 템플릿의 DefinitionSubstitutions
AWS SAM으로 CloudFormation 템플릿을 사용하여 상태 머신을 정의할 수 있습니다. AWS SAM을 사용하여 템플릿 또는 별도의 파일에서 상태 머신을 인라인으로 정의할 수 있습니다. 다음 AWS SAM 템플릿에는 주식 거래 워크플로를 시뮬레이션하는 상태 머신이 포함되어 있습니다. 이 상태 머신은 주식 가격을 확인하고 주식 매수 또는 매도 여부를 결정하는 3가지 Lambda 함수를 호출합니다. 그러면 이 거래가 Amazon DynamoDB 테이블에 기록됩니다. 다음 템플릿의 Lambda 함수 및 DynamoDB 테이블의 ARN은 DefinitionSubstitutions
를 사용하여 지정됩니다.
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: | step-functions-stock-trader Sample SAM Template for step-functions-stock-trader Resources: StockTradingStateMachine: Type: AWS::Serverless::StateMachine Properties: DefinitionSubstitutions: StockCheckerFunctionArn: !GetAtt StockCheckerFunction.Arn StockSellerFunctionArn: !GetAtt StockSellerFunction.Arn StockBuyerFunctionArn: !GetAtt StockBuyerFunction.Arn DDBPutItem: !Sub arn:${AWS::Partition}:states:::dynamodb:putItem DDBTable: !Ref TransactionTable Policies: - DynamoDBWritePolicy: TableName: !Ref TransactionTable - LambdaInvokePolicy: FunctionName: !Ref StockCheckerFunction - LambdaInvokePolicy: FunctionName: !Ref StockBuyerFunction - LambdaInvokePolicy: FunctionName: !Ref StockSellerFunction DefinitionUri: statemachine/stock_trader.asl.json StockCheckerFunction: Type: AWS::Serverless::Function Properties: CodeUri: functions/stock-checker/ Handler: app.lambdaHandler Runtime: nodejs18.x Architectures: - x86_64 StockSellerFunction: Type: AWS::Serverless::Function Properties: CodeUri: functions/stock-seller/ Handler: app.lambdaHandler Runtime: nodejs18.x Architectures: - x86_64 StockBuyerFunction: Type: AWS::Serverless::Function Properties: CodeUri: functions/stock-buyer/ Handler: app.lambdaHandler Runtime: nodejs18.x Architectures: - x86_64 TransactionTable: Type: AWS::DynamoDB::Table Properties: AttributeDefinitions: - AttributeName: id AttributeType: S
다음 코드는 AWS SAM을 사용하여 Step Functions 상태 시스템 만들기 자습서에서 사용되는 stock_trader.asl.json
파일의 상태 머신 정의입니다. 이 상태 머신 정의에는 ${dollar_sign_brace}
표기법으로 표시된 여러 개의 DefinitionSubstitutions
가 포함되어 있습니다. 예를 들어 Check Stock Value
작업에 정적 Lambda 함수 ARN을 지정하는 대신 대체 ${StockCheckerFunctionArn}
함수를 사용합니다. 이 대체 값은 템플릿의 DefinitionSubstitutions 속성에 정의되어 있습니다. DefinitionSubstitutions
는 상태 머신 리소스의 키-값 페어의 맵입니다. DefinitionSubstitutions
에서 ${StockCheckerFunctionArn}은 CloudFormation 내장 함수 !GetAtt
를 사용하여 StockCheckerFunction
리소스의 ARN에 매핑됩니다. AWS SAM 템플릿을 배포하면 템플릿의 DefinitionSubstitutions
가 실제 값으로 대체됩니다.
{ "Comment": "A state machine that does mock stock trading.", "StartAt": "Check Stock Value", "States": { "Check Stock Value": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "${StockCheckerFunctionArn}" }, "Next": "Buy or Sell?" }, "Buy or Sell?": { "Type": "Choice", "Choices": [ { "Variable": "$.stock_price", "NumericLessThanEquals": 50, "Next": "Buy Stock" } ], "Default": "Sell Stock" }, "Buy Stock": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "${StockBuyerFunctionArn}" }, "Retry": [ { "ErrorEquals": [ "Lambda.ServiceException", "Lambda.AWSLambdaException", "Lambda.SdkClientException", "Lambda.TooManyRequestsException" ], "IntervalSeconds": 1, "MaxAttempts": 3, "BackoffRate": 2 } ], "Next": "Record Transaction" }, "Sell Stock": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "${StockSellerFunctionArn}" }, "Next": "Record Transaction" }, "Record Transaction": { "Type": "Task", "Resource": "arn:aws:states:::dynamodb:putItem", "Parameters": { "TableName": "${DDBTable}", "Item": { "Id": { "S.$": "$.id" }, "Type": { "S.$": "$.type" }, "Price": { "N.$": "$.price" }, "Quantity": { "N.$": "$.qty" }, "Timestamp": { "S.$": "$.timestamp" } } }, "End": true } } }
다음 단계
다음 리소스 AWS SAM 와 함께에서 Step Functions를 사용하는 방법에 대해 자세히 알아볼 수 있습니다.
-
자습AWS SAM을 사용하여 Step Functions 상태 시스템 만들기서를 완료하여 상태 시스템을 생성합니다 AWS SAM.
-
AWS::Serverless::StateMachine 리소스를 지정합니다.
-
사용할 AWS SAM 정책 템플릿을 찾습니다.
-
Step Functions에서 AWS Toolkit for Visual Studio Code를 사용합니다.
-
AWS SAM에서 제공하는 기능을 자세히 알아보려면 AWS SAM CLI 참조를 검토하세요.
또한 Infrastructure Composer의 Workflow Studio와 같은 비주얼 빌더를 사용하여 코드형 인프라(IaC)에서 워크플로를 설계하고 구축할 수 있습니다. 자세한 내용은 Infrastructure Composer의 Workflow Studio를 사용하여 Step Functions 워크플로 구축 단원을 참조하십시오.