작업 상태에서 워크플로 실행 시작 - AWS Step Functions

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

작업 상태에서 워크플로 실행 시작

AWS Step Functions는 상태 머신의 Task 상태에서 직접 워크플로 실행을 시작할 수 있습니다. 이를 통해 워크플로를 더 작은 상태 머신으로 나누고 이러한 다른 상태 머신의 실행을 시작할 수 있습니다. 이러한 새로운 워크플로 실행을 시작하면 다음을 수행할 수 있습니다.

  • 상위 수준의 워크플로를 하위 수준의 작업별 워크플로우와 분리합니다.

  • 별도의 상태 머신을 여러 번 호출하여 반복적인 요소를 피하십시오.

  • 빠른 개발을 위해 모듈식 재사용 가능한 워크플로 라이브러리를 만듭니다.

  • 복잡성을 줄이고 상태 시스템을보다 쉽게 편집하고 문제를 해결할 수 있습니다.

Step Functions는 자체 API를 통합 서비스로 직접적으로 호출하여 이러한 워크플로 실행을 시작할 수 있습니다. 해당 Task 상태에서 StartExecution API 작업을 호출하고 필요한 매개 변수를 전달하면 됩니다. 모든 서비스 통합 패턴을 사용하여 Step Functions API를 직접적으로 호출할 수 있습니다.

작은 정보

중첩된 워크플로 예제를 AWS 계정에 배포하려면 모듈 13 - 중첩된 Express 워크플로를 참조하세요.

상태 시스템의 새 실행을 시작하려면 다음 예제와 유사한 Task 상태를 사용합니다.

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution", "Parameters":{ "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Input":{ "Comment":"Hello world!" }, }, "Retry":[ { "ErrorEquals":[ "StepFunctions.ExecutionLimitExceeded" ] } ], "End":true }

Task 상태는 HelloWorld 상태 머신의 새로운 실행을 시작하고 JSON 주석을 입력으로 전달합니다.

참고

StartExecution API 작업 할당량은 시작할 수 있는 실행 수를 제한할 수 있습니다. StepFunctions.ExecutionLimitExceededRetry를 사용하여 실행이 시작되었는지 확인하십시오. 다음 항목을 참조하십시오.

워크플로 실행을 연결합니다

시작된 워크플로 실행을 시작된 실행과 연결하려면 컨텍스트 개체의 실행 ID를 실행 입력으로 전달하십시오. 실행 중인 Task 상태에서 컨텍스트 개체의 ID에 액세스할 수 있습니다. 매개 변수 이름에 .$를 추가하고 $$.Execution.Id를 사용하여 컨텍스트 개체에서 ID를 참조하여 실행 ID를 전달하십시오.

"AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id"

실행을 시작할 때 AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID로 이름이 지정된 특수 매개 변수를 사용할 수 있습니다. 포함된 경우 이 연결은 Step Functions 콘솔의 단계 세부 정보 섹션에 링크를 제공합니다. 제공되면 실행 시작부터 시작된 워크플로 실행까지 워크플로 실행을 쉽게 추적할 수 있습니다. 이전 예제를 사용하여 다음과 같이 실행 ID를 HelloWorld 상태 머신의 시작된 실행과 연결합니다.

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution", "Parameters":{ "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Input": { "Comment": "Hello world!", "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id" } }, "End":true }

자세한 내용은 다음을 참조하세요.