Lambda 비동기 호출의 오류 처리 설정 구성

Lambda 비동기 호출의 오류 처리 설정 구성

다음 설정을 사용해 비동기 함수 호출에서 Lambda가 오류와 재시도를 처리하는 방식을 구성할 수 있습니다.

출처: AWS Lambda 개발자 안내서

본문

  • MaximumEventAgeInSeconds: Lambda가 이벤트를 버리기 전에 비동기 이벤트 큐에 보관하는 최대 시간(초)입니다.
  • MaximumRetryAttempts: 함수가 오류를 반환할 때 Lambda가 이벤트를 재시도하는 최대 횟수입니다.

함수, 버전, 별칭에 대한 오류 처리 설정은 Lambda 콘솔이나 AWS CLI로 구성합니다.

콘솔로 구성:

  1. Lambda 콘솔의 Functions 페이지를 엽니다.
  2. 함수를 선택합니다.
  3. Configuration을 선택한 뒤 Asynchronous invocation을 선택합니다.
  4. Asynchronous invocation 아래에서 Edit을 선택합니다.
  5. 다음 설정을 구성합니다.
    • Maximum age of event – Lambda가 이벤트를 비동기 이벤트 큐에 보관하는 최대 시간으로, 최대 6시간입니다.
    • Retry attempts – 함수가 오류를 반환할 때 Lambda가 재시도하는 횟수로, 0~2 사이입니다.
  6. Save를 선택합니다.

AWS CLI로 구성:

AWS CLI로 비동기 호출을 구성하려면 put-function-event-invoke-config 명령을 사용합니다. 다음 예제는 함수에 최대 이벤트 보관 시간 1시간, 재시도 없음을 구성합니다.

aws lambda put-function-event-invoke-config \ 
  --function-name error \
  --maximum-event-age-in-seconds 3600 \
  --maximum-retry-attempts 0

put-function-event-invoke-config 명령은 함수, 버전, 별칭의 기존 구성을 덮어씁니다. 다른 설정을 재설정하지 않고 한 옵션만 구성하려면 update-function-event-invoke-config를 사용하세요. 다음 예제는 이벤트를 처리할 수 없을 때 표준 SQS 큐 destination에 레코드를 보내도록 Lambda를 구성합니다.

aws lambda update-function-event-invoke-config \
  --function-name my-function \
  --destination-config '{"OnFailure":{"Destination": "arn:aws:sqs:us-east-1:123456789012:destination"}}'

다음과 같은 출력이 보여야 합니다.

{
    "LastModified": 1573686021.479,
    "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function:$LATEST",
    "MaximumRetryAttempts": 0,
    "MaximumEventAgeInSeconds": 3600,
    "DestinationConfig": {
        "OnSuccess": {},
        "OnFailure": {}
    }
}

호출 이벤트가 최대 보관 시간을 초과하거나 모든 재시도를 실패하면 Lambda는 이를 버립니다. 버려진 이벤트의 사본을 보존하려면 실패 이벤트 대상(failed-event destination)을 구성하세요.

더 알아보기 (Learn more)