기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Step Functions 상태 시스템의 오류 조건 처리
이 자습서에서는 사용자 지정 오류를 발생시키도록 구축된 Lambda 함수 예제를 호출하는 작업 상태로 AWS Step Functions 상태 시스템을 생성합니다.
작업은 필드를 구성할 수 폴백 상태있는 중 하나입니다Catch
. 통합에서 오류가 수신되면 오류 이름에 따라 캐치 필드에서 다음 단계를 선택합니다.
1단계: 오류를 발생시키는 Lambda 함수 생성
Lambda 함수를 사용하면 오류 조건을 시뮬레이션할 수 있습니다.
-
https://console.aws.amazon.com/lambda/
AWS Lambda 콘솔을 엽니다. -
함수 생성을 선택합니다.
-
블루프린트 사용을 선택하고를 검색
Step Functions
한 다음 사용자 지정 오류 발생을 선택합니다. -
[함수 이름]에
ThrowErrorFunction
을 입력합니다. -
역할(Role)에서 기본 Lambda 권한을 가진 새 역할 생성(Create a new role with basic Lambda permissions)을 선택합니다.
-
함수 생성을 선택합니다.
다음 코드가 코드 창에 표시되어야 합니다.
export const handler = async () => { function CustomError(message) { this.name = 'CustomError'; this.message = message; } CustomError.prototype = new Error(); throw new CustomError('This is a custom error!'); };
2단계: Lambda 함수 테스트
상태 시스템을 생성하기 전에 Lambda 함수가 호출 CustomError
시를 발생시키는지 확인합니다.
-
테스트 탭을 선택합니다.
-
새 이벤트 생성을 선택하고 기본 이벤트 JSON을 유지합니다.
-
테스트를 선택하여 테스트 이벤트로 함수를 호출합니다.
-
실행 함수를 확장하여 발생한 오류의 세부 정보를 검토합니다.
이제 사용자 지정 오류를 발생시킬 준비가 된 Lambda 함수가 있습니다.
다음 단계에서는 해당 오류를 포착하고 재시도하도록 상태 시스템을 설정합니다.
3단계: 상태 시스템 생성
Step Functions 콘솔을 사용하여 Catch
구성과 Task 워크플로 상태 함께를 사용하는 상태 시스템을 생성합니다. 상태 시스템은 함수가 호출될 때 오류 발생을 시뮬레이션하도록 빌드한 Lambda 함수를 호출합니다. Step Functions는 재시도 간에 지수 백오프를 사용하여 함수를 재시도합니다.
-
Step Functions 콘솔
을 열고 메뉴에서 상태 머신을 선택한 다음 상태 머신 생성을 선택합니다. -
Create from blank를 선택하고 상태 시스템 이름에
CatchErrorStateMachine
을 입력합니다. -
기본 유형(표준)을 수락한 다음 계속을 선택하여 Workflow Studio에서 상태 시스템을 편집합니다.
-
코드를 선택하여 ASL 편집기로 전환한 다음 코드를 다음 상태 시스템 정의로 바꿉니다.
{ "Comment": "Example state machine that can catch a custom error thrown by a function integration.", "StartAt": "CreateAccount", "States": { "CreateAccount": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Output": "{% $states.result.Payload %}", "Arguments": { "FunctionName": "arn:aws:lambda:
region
:account-id
:function:ThrowErrorFunction:$LATEST", "Payload": "{% $states.input %}" }, "Catch": [ { "ErrorEquals": [ "CustomError" ], "Next": "CustomErrorFallback" }, { "ErrorEquals": [ "States.ALL" ], "Next": "CatchAllFallback" } ], "End": true, "Retry": [ { "ErrorEquals": [ "CustomError", "Lambda.ServiceException", "Lambda.AWSLambdaException", "Lambda.SdkClientException", "Lambda.TooManyRequestsException" ], "IntervalSeconds": 1, "MaxAttempts": 3, "BackoffRate": 2, "JitterStrategy": "FULL" } ] }, "CustomErrorFallback": { "Type": "Pass", "End": true, "Output": { "Result": "Fallback from a custom error function." } }, "CatchAllFallback": { "Type": "Pass", "End": true, "Output": { "Result": "Fallback from all other error codes." } } }, "QueryLanguage": "JSONata" }
4단계: 상태 시스템 구성
상태 시스템을 실행하기 전에 먼저 이전에 생성한 Lambda 함수에 연결해야 합니다.
-
디자인 모드로 다시 전환하고 CreateAccount라는 Lambda : 작업 호출 상태를 선택합니다.
구성 탭에서 API 인수를 찾습니다. 함수 이름에서 이전에 생성한 Lambda 함수를 선택합니다.
생성을 선택하고 역할을 검토한 다음 확인을 선택하여 상태 시스템을 생성합니다.
5단계: 상태 시스템 실행
상태 시스템을 생성하고 구성한 후 이를 실행하고 흐름을 검사할 수 있습니다.
-
편집기에서 실행을 선택합니다.
또는 상태 시스템 목록에서 실행 시작을 선택합니다.
-
실행 시작 대화 상자에서 생성된 ID를 수락하고 입력에 다음 JSON을 입력합니다.
{ "Cause" : "Custom Function Error" }
-
실행 시작을 선택합니다.
Step Functions 콘솔은 실행 세부 정보 페이지라고 하는 실행 ID가 있는 페이지로 이동합니다. 워크플로가 진행되고 완료되면 실행 결과를 검토할 수 있습니다.
실행 결과를 검토하려면 그래프 보기에서 개별 상태를 선택한 다음 단계 세부 정보 창에서 개별 탭을 선택하여 입력, 출력 및 정의가 포함된 각 상태의 세부 정보를 각각 봅니다. 실행 세부 정보 페이지에서 볼 수 있는 실행 정보에 대한 자세한 내용은 실행 세부 정보 개요 섹션을 참조하세요.
상태 시스템은 Lambda 함수를 호출하여를 발생시킵니다CustomError
. 그래프 보기에서 CreateAccount 단계를 선택하여 상태 출력을 확인합니다. 상태 시스템 출력은 다음 그림과 비슷해야 합니다.

축하합니다!
이제 Lambda 함수에서 발생하는 오류 조건을 포착하고 처리할 수 있는 상태 시스템이 생겼습니다. 이 패턴을 사용하여 워크플로에서 강력한 오류 처리를 구현할 수 있습니다.
참고
시간 초과 시 Retry하거나 오류가 발생하거나 시간이 초과될 때 Catch
를 사용하여 특정 상태로 전환되는 상태 시스템도 만들 수 있습니다. 오류 처리 기술의 예는 Retry 및 Catch 사용 예제를 참조하십시오.