서버리스 프레임워크가 포함된 Step Functions Workflow Studio
10758 단어 tutorialawsserverlesscloud
serverless.yml
내에서 직접 단계 함수를 정의할 수 있는 멋진 Serverless Framework 확장입니다. 그러나 단계 함수에 대한 정의는 빠르게 복잡해지는 경향이 있으며 YAML을 보는 것만으로는 워크플로가 실제로 어떻게 보이고 흐르는지 시각화하기 어렵습니다. Step Functions Workflow Studio은 상태 시스템을 대화식으로 스케치할 수 있도록 하여 정확히 이를 지원합니다. 이 게시물에서는 Workflow Studio를 Step Functions 플러그인과 함께 사용하는 방법에 대한 간략한 설명을 제공합니다.상태 머신 생성
시작하려면 AWS 콘솔에서 Step Functions 페이지로 이동하여 "Create state machine"을 누르십시오.

그런 다음 "작업 흐름을 시각적으로 디자인"을 선택한 후 다음으로 이동합니다.

여기에서 작업 및 흐름을 끌어서 놓고 디자인에 만족할 때까지 속성, 흐름 및 오류 처리를 수정할 수 있습니다.

결국 서버리스 앱에서 정의하려는 모든 리소스가 그 동안 구성된 값을 참조하도록 설정합니다. 예를 들어 Lambda 함수 이름을 문자열 이름으로 설정합니다. 완료되면 "다음"을 클릭합니다.

마침내 상태 시스템에 대한 생성된 JSON 스키마가 생겼습니다! 하지만 기다려. Serverless 템플릿은 JSON이 아닌 YAML입니다. 이를 실제로 사용할 수 있는 것으로 변환하려면 어떻게 해야 할까요?

결과적으로 YAML is just a superset of JSON 은 모든 JSON이 유효한 YAML임을 의미합니다. 생성된 JSON은 Amazon State Languages spec 형식이며 동일한 사양이 serverless-step-functions 플러그인에서 사용됩니다. 즉, Code Beatify 과 같은 온라인 도구 또는 yq 과 같은 CLI 도구를 사용하여 JSON 스니펫을 YAML로 변환할 수 있습니다.

이제 YAML에 정의된 상태 시스템이 있으므로 실제로
serverless.yml
에서 사용하기만 하면 됩니다.합치기
If you don't already have a serverless project set up, check out my or just run
serverless
in your terminal to choose from one of the boilerplates.
serverless-step-functions 플러그인은 루트
serverless.yml
속성으로 stepFunctions
형식을 확장합니다. 이를 사용하여 YAML 스니펫을 상태 머신의 정의로 붙여넣어 단계 함수를 정의합니다.// serverless.yml
[...]
stepFunctions:
stateMachines:
myStateMachine:
name: MyStateMachine
[your generated state machine goes here]
우리가 자리 표시자 참조를 사용한 Lambda 함수 또는 기타 서비스에 대한 모든 참조는 가리키기를 원하는 실제 리소스를 참조하도록 업데이트해야 합니다. 예를 들어 Lambda 정의는 생성될 때 다음과 같을 수 있습니다.
FirstFunction:
Type: Task
Resource: arn:aws:states:::lambda:invoke
OutputPath: $.Payload
Parameters:
Payload.$: $
FunctionName: firstFunction
대신 다음과 같이 변경하여 스택에 정의된
firstFunction
Lambda를 참조하도록 변경할 수 있습니다.FirstFunction:
Type: Task
Resource: !GetAtt firstFunction.Arn
OutputPath: "$.Payload"
Parameters:
Payload.$: "$"
위 예의 워크플로에서 전체
serverless.yml
는 다음과 같습니다.service: step-functions-demo
plugins:
- serverless-step-functions
provider:
name: aws
runtime: nodejs14.x
stepFunctions:
stateMachines:
myStateMachine:
name: MyStateMachine
definition:
Comment: This is your state machine
StartAt: First function
States:
First function:
Type: Task
Resource: !GetAtt firstFunction.Arn
OutputPath: "$.Payload"
Parameters:
Payload.$: "$"
Retry:
- ErrorEquals:
- Lambda.ServiceException
- Lambda.AWSLambdaException
- Lambda.SdkClientException
IntervalSeconds: 2
MaxAttempts: 6
BackoffRate: 2
Next: Wait
Wait:
Type: Wait
Seconds: 5
Next: Second function
Second function:
Type: Task
Resource: !GetAtt secondFunction.Arn
OutputPath: "$.Payload"
Parameters:
Payload.$: "$"
Retry:
- ErrorEquals:
- Lambda.ServiceException
- Lambda.AWSLambdaException
- Lambda.SdkClientException
IntervalSeconds: 2
MaxAttempts: 6
BackoffRate: 2
End: true
functions:
firstFunction:
handler: src/functions/first.handler
secondFunction:
handler: src/functions/second.handler
이 게시물이 마음에 들었고 더 많은 내용을 보려면 내가 서버리스 기술, AWS 및 개발자 생산성에 대해 자주 쓰는 Twitter에서 나를 팔로우하십시오! 👋
Reference
이 문제에 관하여(서버리스 프레임워크가 포함된 Step Functions Workflow Studio), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws-builders/step-functions-workflow-studio-with-serverless-framework-4j8m텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)