Lambda 비동기 호출 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 10월 17일

AWS Lambda 함수를 비동기적으로 호출하도록 설정했지만 대상이 시작되지 않습니다. 이 문제를 해결하려면 어떻게 해야 하나요?

Lambda 콘솔을 통해 Lambda 함수를 호출하면 해당 함수가 동기적으로 호출되나요 아니면 비동기적으로 호출되나요?

-또는-

중복된 Lambda 함수 호출을 수정하려면 어떻게 해야 하나요?

해결 방법

Lambda 함수를 비동기적으로 호출한 후 호출이 실패하는 경우 다음과 같은 원인 때문일 수 있습니다.

  • Lambda가 코드에 포함된 작업을 수행할 권한이 없습니다.
  • Lambda 함수를 호출하는 AWS 서비스에 충분한 권한이 없습니다.
  • Lambda 함수가 동기적으로 호출됩니다.
  • Lambda 함수의 비동기 호출 구성에서 재시도 횟수가 0으로 설정되었습니다.

비동기 호출 문제를 해결하려면 다음 단계를 따르세요.

1.    Lambda 함수가 호출되는 방식을 결정합니다. 함수가 AWS CLI를 사용하여 호출되나요? 함수가 AWS 서비스를 통해 호출되나요?

2.    AWS 서비스가 Lambda 함수를 동기적으로 호출하는지 비동기적으로 호출하는지 확인합니다.

3.    다음 명령을 사용하여 Lambda 함수를 비동기적으로 호출합니다.

aws lambda invoke
  --function-name my-function 
      --invocation-type Event
          --cli-binary-format raw-in-base64-out
              --payload '{ "key": "value" }' response.json

202 상태 코드가 보고되었는지 또는 명령이 오류를 반환하는지 확인합니다.

4.    Lambda 함수의 Amazon CloudWatch Logs를 검토하여 호출 중복 여부를 확인하세요.

  • 요청 ID가 같은지 여부.
  • 오류가 반환되거나 시간 초과되는지 여부.

자세한 내용은 Lambda 함수 호출 중복을 방지하려면 어떻게 해야 합니까?를 참조하세요.

    5.    중복 호출의 요청 ID가 같고 오류가 반환되거나 제한 시간이 초과된 경우 비동기 호출에 대한 오류 처리를 구성하세요. 이 구성을 사용하면 장애 발생 시 Lambda 서비스가 수행할 수 있는 재시도 횟수를 제어할 수 있습니다.

    자세한 내용은 AWS Lambda에서의 오류 처리 및 자동 재시도를 참조하세요.

    참고: 오류 또는 시간 초과를 반환하는 요청 ID가 동일한 중복 호출은 Lambda가 함수를 다시 시도했음을 나타냅니다.

    6.    중복 호출이 오류를 반환하지 않고 시간이 초과되지 않은 경우 다음 단계를 따르세요.

    • Lambda 함수의 코드가 멱등적인지 동일한 메시지를 여러 번 처리할 수 있는지 확인합니다.
    • Lambda 함수가 수신하는 호출 요청 수를 처리할 수 있을 만큼 동시성 한도를 높게 설정했는지 확인합니다.
    • Lambda 함수가 반환하는 모든 오류를 식별하고 해결합니다.

    자세한 내용은 Lambda 함수 실패 문제를 해결하려면 어떻게 해야 하나요?를 참조하세요.

    참고: 클라이언트 측에서 중복된 호출인 경우 요청 ID가 달라집니다.

    7.    여전히 문제를 해결할 수 없는 경우 AWS Support에 사례를 개설하세요. 그리고 다음 정보를 제공하세요.

    • Lambda 함수 Amazon 리소스 이름(ARN).
    • 포함된 모든 서비스로 설정된 Lambda 함수의 워크플로우.
    • 문제가 간헐적인지 지속적인지에 대한 세부 정보.
    • 문제가 발생한 시점부터 .txt 형식으로 된 전체 CloudWatch 로그. 이러한 CloudWatch 로그는 제한 시간 문제, 초기화 기간 및 권한 문제를 포함하는 Lambda 함수 오류를 식별하는 데 사용됩니다.
    • UTC로 표시된 시간대 또는 타임스탬프와 관련된 문제의 정확한 타임스탬프.

    참고: AWS Support 담당자는 보안 및 개인 정보 보호상의 이유로 고객의 CloudWatch 로그에 액세스할 수 없습니다.


    이 문서가 도움이 되었나요?


    결제 또는 기술 지원이 필요하세요?