작업 워크플로 상태 - AWS Step Functions

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

작업 워크플로 상태

Task 상태("Type": "Task")는 상태 머신에 의해 수행되는 하나의 작업 단위를 나타냅니다. 작업은 액티비티 또는 액티비티를 사용하여 작업을 수행합니다. AWS Lambda 지원되는 다른 기능과의 통합을 통한 기능 AWS 서비스또는 Stripe와 같은 API 타사를 호출하여

Amazon States 언어는 상태의 유형을 설정하고 활동, Lambda 함수 또는 타사 엔드포인트의 Amazon 리소스 이름 (ARN) 을 작업에 제공하여 작업을 나타냅니다. Task API 다음 Task 상태 정의는 HelloFunction라는 Lambda 함수를 간접적으로 호출합니다.

"Lambda Invoke": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:HelloFunction:$LATEST" }, "End": true }

Task 유형

Step Functions는 Task 상태 정의에 지정할 수 있는 다음 작업 유형을 지원합니다.

작업 상태 정의 ARN Resource 필드에 작업 유형을 제공하여 작업 유형을 지정합니다. 다음 예제에서는 Resource 필드 구문을 보여줍니다. 타사를 호출하는 유형을 제외한 모든 작업 유형은 다음 구문을 사용합니다. API HTTP태스크 구문에 대한 자세한 내용은 을 참조하십시오Step Functions APIs 워크플로에서 서드파티 호출.

작업 상태 정의에서 다음 구문의 기울임꼴 텍스트를 다음과 같이 바꾸십시오. AWS 리소스별 정보.

arn:partition:service:region:account:task_type:name

다음 목록에서는 이 구문의 개별 구성 요소를 설명합니다.

참고

Step Functions는 파티션 또는 지역 ARNs 간 참조를 지원하지 않습니다. 예를 들어 aws-cnaws 파티션에서 작업을 간접적으로 호출할 수 없으며 그 반대의 경우에는 마찬가지입니다.

다음 단원에서는 각 작업 유형에 대한 자세한 내용이 제공됩니다.

활동

활동은 사용자가 구현하고 호스팅하며 특정 작업을 수행하는 작업자(프로세스나 스레드)를 나타냅니다. 이러한 활동은 표준 워크플로에서만 지원되며 Express 워크플로에서는 지원되지 않습니다.

활동은 다음 구문을 Resource ARNs 사용합니다.

arn:partition:states:region:account:activity:name
참고

활동을 처음 사용하기 전에 CreateActivity, API 액션 또는 Step Functions 콘솔을 사용하여 Step Functions를 사용하여 활동을 만들어야 합니다.

활동 생성 및 작업자 구현에 대한 자세한 내용은 활동을 참조하십시오.

Lambda 함수

Lambda 작업은 다음을 사용하여 함수를 실행합니다. AWS Lambda. Lambda 함수를 지정하려면 필드에서 Lambda 함수를 사용하십시오ARN. Resource

통합 유형에 따라 (최적화된 통합 또는 AWS SDK통합) Lambda 함수를 지정하는 데 사용하는 경우 Lambda 함수 필드의 구문은 다양합니다. Resource

다음 Resource 필드 구문은 Lambda 함수와 최적화된 통합의 예제입니다.

"arn:aws:states:::lambda:invoke"

다음 Resource 필드 구문은 예시입니다. AWS SDKLambda 함수와의 통합

"arn:aws:states:::aws-sdk:lambda:invoke"

다음 Task 상태 정의에서는 HelloWorld라는 Lambda 함수와 최적화된 통합의 예제를 보여줍니다.

"LambdaState": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-1:function:HelloWorld:$LATEST" }, "Next": "NextState" }

필드에 지정된 Lambda 함수가 완료되면 출력이 필드 (” “) 에서 Next 식별된 상태로 전송됩니다. Resource NextState

지원되는 A. AWS 서비스

연결된 리소스를 참조하는 경우 Step Functions는 지원되는 서비스의 API 작업을 직접 호출합니다. Resource 필드에서 서비스와 작업을 지정합니다.

연결된 서비스는 다음 구문을 Resource ARNs 사용합니다.

arn:partition:states:region:account:servicename:APIname
참고

연결된 리소스에 대한 동기 연결을 만들려면 에 추가하십시오.sync.APIname 의 항목. ARN 자세한 내용은 서비스 통합 단원을 참조하십시오.

예:

{ "StartAt": "BATCH_JOB", "States": { "BATCH_JOB": { "Type": "Task", "Resource": "arn:aws:states:::batch:submitJob.sync", "Parameters": { "JobDefinition": "preprocessing", "JobName": "PreprocessingBatchJob", "JobQueue": "SecondaryQueue", "Parameters.$": "$.batchjob.parameters", "RetryStrategy": { "attempts": 5 } }, "End": true } } }

Task 상태 필드

Task 상태에서는 일반 상태 필드 외에도 다음 필드가 있습니다.

Resource(필수)

AURI, 특히 ARN 실행할 특정 작업을 고유하게 식별하는 A.

Parameters(선택 사항)

연결된 리소스의 API 작업에 정보를 전달하는 데 사용됩니다. 파라미터는 JSON 정적과 정적을 혼합하여 사용할 수 JsonPath있습니다. 자세한 내용은 Step API Functions에서 서비스에 파라미터 전달하기 단원을 참조하십시오.

Credentials(선택 사항)

지정된 Resource 역할을 간접적으로 호출하기 전에 상태 시스템의 실행 역할이 간주되어야 하는 대상 역할을 지정합니다. 또는 실행 입력을 기반으로 런타임 ARN 시 IAM 역할로 해석되는 JSONPath 값이나 내장 함수를 지정할 수도 있습니다. JSONPath값을 지정하는 경우 표기법을 접두사로 입력해야 합니다. $.

Task 상태에서 이 필드 사용에 대한 예제는 Task 상태의 보안 인증 정보 필드 예제 섹션을 참조하세요. 이 필드를 사용하여 교차 계정에 액세스하는 예를 들어 보겠습니다. AWS 스테이트 머신의 리소스는 을 참조하십시오크로스 계정 액세스 AWS Step Functions의 리소스.

참고

이 필드는 Lambda 함수를 Task 유형 사용하는 함수와 지원되는 함수에서 지원됩니다. AWS 서비스.

ResultPath(선택 사항)

Resource에 지정된 작업 실행 결과를 배치할 위치(입력에서의 위치)를 지정합니다. 그러면 OutputPath 필드(있는 경우)에 지정된 대로 입력이 필터링된 후 상태의 출력으로 사용됩니다. 자세한 내용은 입/출력 처리를 참조하십시오.

ResultSelector(선택 사항)

키 값 페어 컬렉션을 전달합니다. 여기서 값은 정적이거나 결과에서 선택됩니다. 자세한 내용은 ResultSelector 단원을 참조하십시오.

Retry(선택 사항)

상태에 런타임 오류가 발생하는 경우 사용될 재시도 정책을 정의하는 객체 배열(Retrier). 자세한 내용은 Retry 및 Catch를 사용하는 상태 시스템 예제 단원을 참조하십시오.

Catch(선택 사항)

폴백(fallback) 상태를 정의하는 객체 배열(Catcher). 이 상태는, 상태에 런타임 오류가 발생하거나 해당 재시도 정책이 소진되거나 정의되지 않은 경우 실행됩니다. 자세한 내용은 폴백 상태를 참조하십시오.

TimeoutSeconds(선택 사항)

States.Timeout 오류로 인해 제한 시간이 초과되어 실패하기 전에 활동이나 작업이 실행될 수 있는 최대 시간을 지정합니다. 제한 시간 값은 0이 아닌 양의 정수여야 합니다. 기본값은 99999999입니다.

작업이 시작된 후에(예: ActivityStarted 또는 LambdaFunctionStarted 이벤트가 실행 이벤트 기록에 로깅될 때) 제한 시간 카운트가 시작합니다. 활동의 경우 GetActivityTask에서 토큰을 받고 ActivityStarted가 실행 이벤트 기록에서 로깅될 때 카운트가 시작합니다.

작업이 시작되면 Step Functions는 지정된 TimeoutSeconds 기간 내에 작업이나 활동 작업자의 성공 또는 실패 응답을 기다립니다. 작업이나 활동 작업자가 이 시간 내에 응답하지 않으면 Step Functions는 워크플로 실행을 실패로 표시합니다.

참고

HTTP작업 제한 시간은 최대 60초이며, 이 한도를 TimeoutSeconds 초과하더라도 마찬가지입니다. 태스크 관련 할당량 HTTP 부분 참조

TimeoutSecondsPath(선택 사항)

참조 경로를 사용하여 상태 입력에서 시간 제한 값을 동적으로 제공하려면 TimeoutSecondsPath를 사용합니다. 확인되면 참조 경로에서 값이 양의 정수인 필드를 선택해야 합니다.

참고

Task 상태에는 TimeoutSecondsTimeoutSecondsPath 모두 포함될 수 없습니다. HTTP작업 제한 시간은 TimeoutSecondsPath 값이 해당 제한을 초과하더라도 최대 60초입니다.

HeartbeatSeconds(선택 사항)

작업 실행 중에 활동 작업자가 하트비트 신호를 보내는 빈도를 결정합니다. 하트비트는 작업이 계속 실행 중이며 완료되는 데 시간이 더 필요하다는 것을 나타냅니다. 하트비트는 TimeoutSeconds 기간 내에 활동이나 작업의 제한 시간이 초과되지 않도록 합니다.

HeartbeatSeconds는 0이 아닌 양의 정수 값이고 TimeoutSeconds 필드 값보다 작아야 합니다. 기본값은 99999999입니다. 작업의 하트비트 사이에서 지정된 시간(초)보다 많은 시간이 경과하면 Task 상태가 실패하고 States.Timeout 오류가 표시됩니다.

활동의 경우 GetActivityTask에서 토큰을 받고 ActivityStarted가 실행 이벤트 기록에서 로깅될 때 카운트가 시작합니다.

HeartbeatSecondsPath(선택 사항)

참조 경로를 사용하여 상태 입력에서 하트비트 값을 동적으로 제공하려면 HeartbeatSecondsPath를 사용합니다. 확인되면 참조 경로에서 값이 양의 정수인 필드를 선택해야 합니다.

참고

Task 상태에는 HeartbeatSecondsHeartbeatSecondsPath 모두 포함될 수 없습니다.

Task 상태가 End 필드를 true로 설정해야 하거나(상태가 실행을 끝내는 경우), Task 상태의 완료 시에 실행되는 Next 필드에 상태를 제공해야 합니다.

Task 상태 정의 예제

다음 예제에서는 요구 사항에 따라 Task 상태 정의를 지정하는 방법을 보여줍니다.

Task 상태 제한 시간 및 하트비트 간격

실행 시간이 긴 활동의 경우 시간 초과 값 및 하트비트 간격을 설정하는 것이 좋습니다. 제한 시간 및 하트비트 값을 지정하거나 동적으로 설정하여 수행할 수 있습니다.

정적 제한 시간 및 하트비트 알림 예제

HelloWorld가 완료되면 다음 단계(NextState)가 실행됩니다.

이 작업이 300초 내에 완료되지 않거나 60초 간격으로 하트비트 알림을 전송하지 않으면 작업이 failed로 표시됩니다.

"ActivityState": { "Type": "Task", "Resource": "arn:aws:states:us-east-1:123456789012:activity:HelloWorld", "TimeoutSeconds": 300, "HeartbeatSeconds": 60, "Next": "NextState" }

동적 작업 제한 시간 및 하트비트 알림 예제

이 예제에서는 다음과 같은 경우 AWS Glue 작업이 완료되면 다음 상태가 실행됩니다.

에서 동적으로 설정한 간격 내에 이 작업을 완료하지 못할 경우 AWS Glue 작업, 작업은 로 표시됩니다. failed

"GlueJobTask": { "Type": "Task", "Resource": "arn:aws:states:::glue:startJobRun.sync", "Parameters": { "JobName": "myGlueJob" }, "TimeoutSecondsPath": "$.params.maxTime", "Next": "NextState" }

Task 상태의 보안 인증 정보 필드 예제

하드 코딩된 역할 IAM 지정 ARN

다음 예제는 이라는 교차 계정 Lambda 함수에 액세스하기 위해 상태 머신의 실행 역할이 맡아야 하는 대상 IAM 역할을 지정합니다. Echo 이 예제에서 대상 ARN 역할은 하드 코딩된 값으로 지정됩니다.

{ "StartAt": "Cross-account call", "States": { "Cross-account call": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Credentials": { "RoleArn": "arn:aws:iam::111122223333:role/LambdaRole" }, "Parameters": { "FunctionName": "arn:aws:lambda:us-east-2:111122223333:function:Echo" }, "End": true } } }

역할로 지정 JSONPath IAM ARN

다음 예제에서는 JSONPath 값을 지정하며, 이 값은 런타임 ARN 시 IAM 역할로 해석됩니다.

{ "StartAt": "Lambda", "States": { "Lambda": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Credentials": { "RoleArn.$": "$.roleArn" }, ... } } }

내장 함수를 역할로 지정 IAM ARN

다음 예제에서는 States.Format런타임 시 역할로 해석되는 내장 함수를 사용합니다. IAM ARN

{ "StartAt": "Lambda", "States": { "Lambda": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Credentials": { "RoleArn.$": "States.Format('arn:aws:iam::{}:role/ROLENAME', $.accountId)" }, ... } } }