기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
실행 중인 실행에서 새 AWS Step Functions 상태 시스템 시작
Step Functions는 자체 API 서비스 통합과 통합됩니다. Step Functions를 사용하여 진행 중인 실행의 작업 상태에서 직접 상태 시스템의 새로운 실행을 시작하는 방법을 알아봅니다. 새 워크플로를 작성할 때 기본 워크플로의 복잡성을 줄이고 공통 프로세스를 재사용하려면 중첩된 워크플로 실행을 사용하십시오.
최적화된 Step Functions 통합의 주요 기능
작업 실행(.sync) 통합 패턴을 사용할 수 있습니다.
요청 및 응답 또는 작업 토큰을 사용하여 콜백 대기 통합 패턴에 대한 최적화는 없습니다.
자세한 내용은 다음 자료를 참조하세요.
지원되는 단계 함수 APIs
워크플로 예시
다음은 다른 상태 머신의 실행을 시작하고 완료될 때까지 기다리는 Task
상태를 포함합니다.
{
"Type":"Task",
"Resource":"arn:aws:states:::states:startExecution.sync:2",
"Parameters":{
"Input":{
"Comment": "Hello world!"
},
"StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld",
"Name":"ExecutionName"
},
"End":true
}
다음은 다른 상태 머신의 실행을 시작하는 Task
상태를 포함합니다.
{
"Type":"Task",
"Resource":"arn:aws:states:::states:startExecution",
"Parameters":{
"Input":{
"Comment": "Hello world!"
},
"StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld",
"Name":"ExecutionName"
},
"End":true
}
다음에는 콜백 서비스 통합 패턴을 구현하는 Task
상태가 포함됩니다.
{
"Type":"Task",
"Resource":"arn:aws:states:::states:startExecution.waitForTaskToken",
"Parameters":{
"Input":{
"Comment": "Hello world!",
"token.$": "$$.Task.Token"
},
"StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld",
"Name":"ExecutionName"
},
"End":true
}
중첩된 워크플로 실행을 시작한 상위 실행과 연결하려면 컨텍스트 객체에서 가져온 실행 ID가 포함된 특별히 이름이 지정된 파라미터를 전달합니다. 중첩 실행을 시작할 때 AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID
라는 매개 변수를 사용하십시오. 파라미터 이름에 .$
를 추가하고를 사용하여 컨텍스트 객체의 ID를 참조하여 실행 ID를 전달합니다$$.Execution.Id
. 자세한 내용은 컨텍스트 객체에 액세스 단원을 참조하십시오.
{
"Type":"Task",
"Resource":"arn:aws:states:::states:startExecution.sync",
"Parameters":{
"Input":{
"Comment": "Hello world!",
"AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id"
},
"StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld",
"Name":"ExecutionName"
},
"End":true
}
중첩된 상태 머신은 다음을 반환합니다.
리소스 | 출력 |
---|---|
startExecution.sync | String |
startExecution.sync:2 | JSON |
둘 다 중첩된 상태 머신이 완료될 때까지 기다리지만, 다른 Output
형식을 반환합니다. 예를 들어 { "MyKey": "MyValue" }
객체를 반환하는 Lambda 함수를 만드는 경우 다음과 같은 응답을 얻습니다.
startExecution.sync의 경우:
{
<other fields>
"Output": "{ \"MyKey\": \"MyValue\" }"
}
startExecution.sync:2의 경우:
{
<other fields>
"Output": {
"MyKey": "MyValue"
}
}
중첩 상태 시스템에 대한 IAM 권한 구성
상위 상태 시스템은 폴링과 이벤트를 사용하여 하위 상태 시스템에서 실행을 완료했는지 확인합니다. Step Functions EventBridge 로 전송되는 이벤트에는 events:PutTargets
, events:PutRule
및에 대한 권한이 필요하지states:DescribeExecution
만 폴링에는에 대한 권한이 필요합니다events:DescribeRule
. 이러한 권한이 IAM 역할에서 누락된 경우 상위 상태 머신이 하위 상태 머신의 실행 완료를 인식하기까지 지연이 발생할 수 있습니다.
단일 중첩 워크플로 실행에 대해 StartExecution
을 요구하는 상태 머신의 경우 해당 상태 머신에 대한 권한을 제한하는 IAM 정책을 사용하십시오.
자세한 내용은 IAM Step Functions에 대한 권한을 참조하세요.
IAM 중첩 Step Functions 워크플로 호출 정책
단일 중첩 워크플로 실행에 대해 StartExecution
을 요구하는 상태 머신의 경우 해당 상태 머신에 대한 권한을 제한하는 IAM 정책을 사용하십시오.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"states:StartExecution"
],
"Resource": [
"arn:aws:states:[[region]]
:[[accountId]]
:stateMachine:[[stateMachineName]]
"
]
}
]
}
자세한 내용은 다음 자료를 참조하세요.
중첩된 워크플로 실행에 대한 자세한 내용은 Step Functions의 작업 상태에서 워크플로 실행 시작 단원을 참조하십시오.