기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Step Functions에서 서비스 통합 패턴을 살펴보세요
AWS Step Functions Amazon States 언어로 서비스와 직접 통합됩니다. 이를 제어할 수 있습니다. AWS 세 가지 서비스 통합 패턴을 사용하는 서비스:
-
서비스를 호출하고 Step Functions가 HTTP 응답을 받은 후 즉시 다음 상태로 진행하도록 합니다.
-
서비스를 직접적으로 호출하고 작업이 완료될 때까지 Step Functions가 기다리도록 합니다.
-
작업 토큰으로 서비스를 직접적으로 호출하고 Step Functions는 해당 토큰이 페이로드와 함께 반환될 때까지 기다리도록 합니다.
이러한 각 서비스 통합 패턴은 작업 정의 URI "Resource" 필드에 a를 생성하는 방법에 따라 제어됩니다.
통합 서비스를 호출하는 방법
구성에 대한 자세한 내용은 AWS Identity and Access Management 통합 서비스의 (IAM) 은 을 참조하십시오Step Functions가 통합 서비스를 위한 IAM 정책을 생성하는 방법.
통합 패턴 지원
표준 워크플로와 익스프레스 워크플로는 동일한 통합을 지원하지만 동일한 통합 패턴은 지원하지 않습니다.
-
표준 워크플로는 요청 응답 통합을 지원합니다. 특정 서비스는 Job 실행 (.sync) 또는 콜백 대기 (. waitForTask토큰), 경우에 따라 두 가지를 모두 지원합니다. 자세한 내용은 다음의 최적화된 통합 표를 참조하십시오.
-
익스프레스 워크플로는 요청 응답 통합만 지원합니다.
두 유형 중에서 결정하는 데 도움이 필요하면 을 참조하십시오Step Functions에서 워크플로우 유형 선택.
AWS SDKStep Functions에서의 통합
통합 서비스 | 요청 및 응답 | 작업 실행 - .sync | 콜백 대기 -. waitForTask토큰 |
---|---|---|---|
200개 이상의 서비스 | 스탠다드 & 익스프레스 | 지원되지 않음 | 표준 |
Step Functions의 최적화된 통합
통합 서비스 | 요청 및 응답 | 작업 실행 - .sync | 콜백 대기 -. waitForTask토큰 |
---|---|---|---|
Amazon API Gateway | 스탠다드 앤 익스프레스 | 지원되지 않음 | 표준 |
Amazon Athena | 스탠다드 & 익스프레스 | 표준 | 지원되지 않음 |
AWS Batch | 스탠다드 & 익스프레스 | 표준 | 지원되지 않음 |
Amazon Bedrock | 스탠다드 & 익스프레스 | 표준 | 표준 |
AWS CodeBuild | 스탠다드 & 익스프레스 | 표준 | 지원되지 않음 |
Amazon DynamoDB | 스탠다드 & 익스프레스 | 지원되지 않음 | 지원되지 않음 |
Amazon ECS/Fargate | 스탠다드 & 익스프레스 | 표준 | 표준 |
Amazon EKS | 스탠다드 & 익스프레스 | 표준 | 표준 |
Amazon EMR | 스탠다드 & 익스프레스 | 표준 | 지원되지 않음 |
Amazon EMR on EKS | 스탠다드 & 익스프레스 | 표준 | 지원되지 않음 |
Amazon EMR Serverless | 스탠다드 & 익스프레스 | 표준 | 지원되지 않음 |
Amazon EventBridge | 스탠다드 & 익스프레스 | 지원되지 않음 | 표준 |
AWS Glue | 스탠다드 & 익스프레스 | 표준 | 지원되지 않음 |
AWS Glue DataBrew | 스탠다드 & 익스프레스 | 표준 | 지원되지 않음 |
AWS Lambda | 스탠다드 & 익스프레스 | 지원되지 않음 | 표준 |
AWS Elemental MediaConvert | 스탠다드 & 익스프레스 | 표준 | 지원되지 않음 |
Amazon SageMaker | 스탠다드 & 익스프레스 | 표준 | 지원되지 않음 |
아마존 SNS | 스탠다드 & 익스프레스 | 지원되지 않음 | 표준 |
Amazon SQS | 스탠다드 & 익스프레스 | 지원되지 않음 | 표준 |
AWS Step Functions | 스탠다드 & 익스프레스 | 표준 | 표준 |
요청 및 응답
태스크 상태 "Resource"
문자열에서 서비스를 지정하고 리소스만 제공하는 경우 Step Functions는 HTTP 응답을 기다린 후 다음 상태로 진행합니다. Step Functions는 작업이 완료될 때까지 기다리지 않습니다.
다음 예는 Amazon SNS 주제를 게시하는 방법을 보여줍니다.
"Send message to SNS":{
"Type":"Task",
"Resource":"arn:aws:states:::sns:publish",
"Parameters":{
"TopicArn":"arn:aws:sns:us-east-1:123456789012:myTopic",
"Message":"Hello from Step Functions!"
},
"Next":"NEXT_STATE"
}
이 예시는 아마존 퍼블리싱을 API SNS 참조합니다. 워크플로우는 를 호출한 후 다음 상태로 진행됩니다. Publish
API
작은 정보
요청 응답 서비스 통합 패턴을 사용하는 샘플 워크플로를 사용자 환경에 배포하려면 AWS 계정모듈 2 - 의 요청 응답을참조하십시오
작업 실행(.sync)
다음과 같은 통합 서비스의 경우 AWS Batch ECSAmazon에서는 Step Functions가 요청이 완료될 때까지 기다린 후 다음 상태로 진행할 수 있습니다. Step .sync
Functions가 대기하도록 하려면 리소스 뒤에 접미사를 추가하여 작업 상태 정의의 "Resource"
필드를 지정하십시오. URI
예를 들어, 제출하는 경우 AWS Batch 작업을 사용하려면 이 예제와 같이 스테이트 머신 정의의 "Resource"
필드를 사용하십시오.
"Manage Batch task": {
"Type": "Task",
"Resource": "arn:aws:states:::batch:submitJob.sync",
"Parameters": {
"JobDefinition": "arn:aws:batch:us-east-2:123456789012:job-definition/testJobDefinition",
"JobName": "testJob",
"JobQueue": "arn:aws:batch:us-east-2:123456789012:job-queue/testQueue"
},
"Next": "NEXT_STATE"
}
Amazon 리소스 이름 (ARN) 에 해당 .sync
부분을 추가하면 Step Functions가 작업이 완료될 때까지 기다립니다. 호출 후 AWS Batch
submitJob
워크플로가 일시 중지됩니다. 작업이 완료되면 Step Functions는 다음 상태로 진행합니다. 자세한 내용은 를 참조하십시오. AWS Batch 샘플 프로젝트:를 사용하여 배치 작업 관리 AWS Batch 그리고 Amazon SNS.
이 (.sync
) 서비스 통합 패턴을 사용하는 작업이 중단되고 Step Functions가 작업을 취소할 수 없으면 통합 서비스에서 추가 요금이 발생할 수 있습니다. 다음과 같은 경우에 작업을 중단할 수 있습니다.
-
상태 시스템 실행이 중지되었습니다.
-
확인할 수 없는 오류가 발생하여 Parallel 상태의 다른 브랜치가 실패합니다.
-
확인할 수 없는 않는 오류가 발생하여 Map 상태 반복이 실패합니다.
Step Functions는 작업을 취소하기 위해 최선을 다합니다. 예를 들어, Step Functions states:startExecution.sync
작업이 중단되면 Step Functions StopExecution
API 작업이 호출됩니다. 하지만 Step Functions에서 작업을 취소하지 못할 수도 있습니다. 이에 대한 이유는 다음과 같지만 이에 국한되지는 않습니다.
-
IAM실행 역할에 해당 API 호출을 수행할 권한이 없습니다.
-
일시적으로 서비스가 중단되었습니다.
.sync
서비스 통합 패턴을 사용하면 Step Functions는 할당된 할당량과 이벤트를 사용하는 폴링을 사용하여 작업 상태를 모니터링합니다. 동일한 계정 내에서 .sync
호출하는 경우 Step Functions는 EventBridge 이벤트를 사용하고 상태에 APIs 지정된 이벤트를 폴링합니다Task
. 크로스 계정 .sync
간접 호출의 경우 Step Functions는 폴링만 사용합니다. 예를 들어states:StartExecution.sync
, 의 경우 Step Functions는 에서 폴링을 수행하고 할당된 할당량을 사용합니다. DescribeExecutionAPI
작은 정보
Run a Job (.sync) 서비스 통합 패턴을 사용하는 샘플 워크플로를 다음 사이트에 배포하려면 AWS 계정자세한 내용은 모듈 3 - 의 작업 (.sync) 실행을 참조하십시오
작업이 완료될 때까지 대기(.sync
)를 지원하는 통합 서비스 목록을 보려면 Step Functions와 서비스 통합 단원을 참조하십시오.
참고
.sync
또는 .waitForTaskToken
패턴을 사용하는 서비스 통합에는 추가 IAM 권한이 필요합니다. 자세한 내용은 Step Functions가 통합 서비스를 위한 IAM 정책을 생성하는 방법 단원을 참조하십시오.
경우에 따라 Step Functions가 작업이 완전히 완료되기 전까지 워크플로를 계속하기를 원할 수 있습니다. 태스크 토큰으로 콜백이 올 때까지 기다리세요. 서비스 통합 패턴을 사용할 때와 같은 방법으로 이 작업을 수행할 수 있습니다. 이렇게 하려면 작업 토큰을 작업에 전달한 다음 SendTaskSuccess
or SendTaskFailure
API호출을 사용하여 반환하세요. Step Functions는 해당 호출에서 제공한 데이터를 사용하여 작업을 완료하고 작업 모니터링을 중지하며 워크플로를 계속합니다.
태스크 토큰으로 콜백이 올 때까지 기다리세요.
콜백 작업은 작업 토큰이 반환될 때까지 워크플로를 일시 중지하는 방법을 제공합니다. 작업은 사람의 승인을 대기하거나, 타사와 통합하거나 레거시 시스템을 호출해야 할 수 있습니다. 이러한 작업의 경우 워크플로 실행이 1년 서비스 할당량(상태 제한과 관련된 할당량 참조)에 도달할 때까지 Step Functions를 일시 중지하고 외부 프로세스나 워크플로가 완료될 때까지 기다릴 수 있습니다. 이러한 상황에서 Step Functions를 사용하면 작업 토큰을 다음 주소로 전달할 수 있습니다. AWS SDK서비스 통합 및 일부 최적화된 서비스 통합에도 적용됩니다. 작업은 SendTaskSuccess
또는 SendTaskFailure
호출을 통해 해당 작업 토큰을 다시 수신할 때까지 일시 중지됩니다.
콜백 작업 토큰을 사용하는 Task
상태 시간이 초과되면 새로운 무작위 토큰이 생성됩니다. 컨텍스트 객체에서 작업 토큰에 액세스할 수 있습니다.
참고
작업 토큰은 1자 이상, 1024자 이하여야 합니다.
함께 사용하려면 .waitForTaskToken
AWS SDK통합을 API 사용하려면 태스크 토큰을 배치할 파라미터 필드가 있어야 합니다.
참고
보안 주체의 태스크 토큰을 동일한 주체의 태스크 토큰으로 전달해야 합니다. AWS 계정. 다른 곳의 주체로부터 토큰을 보내면 토큰은 작동하지 않습니다. AWS 계정.
작은 정보
콜백 태스크 토큰 서비스 통합 패턴을 사용하는 샘플 워크플로를 사용자 계정에 배포하려면 AWS 계정모듈 4 - Task 토큰을 사용한 콜백 대기를
작업 토큰 대기(.waitForTaskToken
)를 지원하는 통합 서비스 목록은 Step Functions와 서비스 통합 단원을 참조하십시오.
작업 토큰 예제
이 예제에서 Step Functions 워크플로는 외부 마이크로서비스와 통합하여 승인 워크플로의 일부로 크레딧 확인을 수행해야 합니다. Step SQS Functions는 메시지의 일부로 작업 토큰이 포함된 Amazon 메시지를 게시합니다. 외부 시스템이 SQS Amazon과 통합되어 메시지를 대기열에서 가져옵니다. 이 작업이 완료되면 결과와 원래 작업 토큰을 반환합니다. 그러면 Step Functions가 워크플로를 계속합니다.
SQSAmazon을 참조하는 작업 정의 "Resource"
필드는 끝에 .waitForTaskToken
추가됩니다.
"Send message to SQS": {
"Type": "Task",
"Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken",
"Parameters": {
"QueueUrl": "https://sqs.us-east-2.amazonaws.com/123456789012/myQueue",
"MessageBody": {
"Message": "Hello from Step Functions!",
"TaskToken.$": "$$.Task.Token"
}
},
"Next": "NEXT_STATE"
}
이는 Step Functions에게 일시 중지하고 작업 토큰을 기다리라고 지시합니다. .waitForTaskToken
을 사용하여 리소스를 지정하면 특정 경로 지정($$.Task.Token
)이 있는 상태 정의의 "Parameters"
필드에서 작업 토큰에 액세스할 수 있습니다. 처음 $$.
는 경로가 컨텍스트 객체에 액세스하고 진행 중인 실행에서 현재 작업에 대한 작업 토큰을 가져오도록 지정합니다
작업이 완료되면 외부 서비스가 taskToken
이 포함되어 있는 SendTaskSuccess
또는 SendTaskFailure
를 직접적으로 호출합니다. 그런 다음에만 워크플우는 다음 상태로 계속합니다.
참고
프로세스가 SendTaskSuccess
또는 SendTaskFailure
와 함께 작업 토큰을 전달하는 데 실패하는 경우 무기한 대기하지 않도록 하려면 대기 작업에 대한 하트비트 시간 제한 구성 단원을 참조하십시오.
컨텍스트 객체에서 토큰 가져오기
컨텍스트 객체는 실행에 대한 정보가 포함된 내부 JSON 객체입니다. 상태 입력과 마찬가지로, 실행 중에 "Parameters"
필드의 경로를 사용하여 이 객체에 액세스할 수 있습니다. 작업 정의 내에서 액세스하는 경우 작업 토큰을 포함하여 특정 실행에 대한 정보가 포함됩니다.
{
"Execution": {
"Id": "arn:aws:states:us-east-1:123456789012:execution:stateMachineName:executionName",
"Input": {
"key": "value"
},
"Name": "executionName",
"RoleArn": "arn:aws:iam::123456789012:role...",
"StartTime": "2019-03-26T20:14:13.192Z"
},
"State": {
"EnteredTime": "2019-03-26T20:14:13.192Z",
"Name": "Test",
"RetryCount": 3
},
"StateMachine": {
"Id": "arn:aws:states:us-east-1:123456789012:stateMachine:stateMachineName",
"Name": "name"
},
"Task": {
"Token": "h7XRiCdLtd/83p1E0dMccoxlzFhglsdkzpK9mBVKZsp7d9yrT1W"
}
}
작업 정의의 "Parameters"
필드 내부에서 특정 경로를 사용하여 작업 토큰에 액세스할 수 있습니다. 입력 또는 컨텍스트 객체에 액세스하려면 먼저 .$
를 파라미터 이름에 추가하여 파라미터가 경로가 되도록 지정합니다. 다음은 "Parameters"
지정에서 입력 및 컨텍스트 객체의 노드를 지정합니다.
"Parameters": {
"Input.$": "$",
"TaskToken.$": "$$.Task.Token"
},
두 경우 모두 .$
를 파라미터 이름에 추가하면 Step Functions에 경로를 예상하라고 지시하는 것입니다. 첫 번째 경우 "$"
는 전체 입력이 포함된 경로입니다. 두 번째 경우, $$.
는 경로가 컨텍스트 객체에 액세스하도록 지정하고 $$.Task.Token
은 파라미터를 진행 중인 실행의 컨텍스트 객체에 있는 작업 토큰의 값으로 설정합니다.
Amazon SQS 예제에서 "Resource"
필드는 Step Functions에게 작업 토큰이 반환될 때까지 기다리라고 지시합니다. .waitForTaskToken
"TaskToken.$":
"$$.Task.Token"
파라미터는 해당 토큰을 Amazon SQS 메시지의 일부로 전달합니다.
"Send message to SQS": {
"Type": "Task",
"Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken",
"Parameters": {
"QueueUrl": "https://sqs.us-east-2.amazonaws.com/123456789012/myQueue",
"MessageBody": {
"Message": "Hello from Step Functions!",
"TaskToken.$": "$$.Task.Token"
}
},
"Next": "NEXT_STATE"
}
컨텍스트 객체에 대한 자세한 내용은 이 가이드의 컨텍스트 객체 단원에 있는 입력 및 출력 처리 항목을 참조하십시오.
대기 작업에 대한 하트비트 시간 제한 구성
작업 토큰을 대기하고 있는 작업은 실행이 1년 서비스 할당량에 도달할 때까지 대기합니다(상태 제한과 관련된 할당량 참조). 실행 멈춤을 방지하기 위해 상태 머신 정의에서 하트비트 제한 시간 간격을 구성할 수 있습니다. HeartbeatSeconds 필드를 사용항 제한 시간 간격을 지정합니다.
{
"StartAt": "Push to SQS",
"States": {
"Push to SQS": {
"Type": "Task",
"Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken",
"HeartbeatSeconds": 600,
"Parameters": {
"MessageBody": { "myTaskToken.$": "$$.Task.Token" },
"QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/push-based-queue"
},
"ResultPath": "$.SQS",
"End": true
}
}
}
이 스테이트 머신 정의에서 작업은 Amazon에 메시지를 SQS 푸시하고 제공된 작업 토큰으로 외부 프로세스가 콜백할 때까지 기다립니다. "HeartbeatSeconds":
600
필드는 하트비트 제한 시간 간격을 10분으로 설정합니다. 작업은 다음 작업 중 하나를 수행하여 작업 토큰이 API 반환될 때까지 기다립니다.
대기 중인 작업이 10분 기간 이내에 유효한 작업 토큰을 수신하지 않으면 이 작업은 States.Timeout
오류 이름과 함께 실패합니다.
자세한 내용은 콜백 작업 샘플 프로젝트인 AmazonSQS, AmazonSNS, Lambda를 사용하여 콜백 패턴 예제 만들기를 참조하십시오.