AWS SDK를 사용하여 Lambda 함수를 호출할 때 '네이티브 Lambda 오류: InvalidSignatureException': 서명 만료" 오류를 해결하려면 어떻게 해야 하나요?

2분 분량
0

AWS SDK를 사용하여 AWS Lambda 함수를 호출하면 함수가 서명 만료 오류를 반환합니다.

간략한 설명

Lambda 만료된 서명은 다음 오류와 유사하게 클라이언트 시간과 서버 시간이 일치하지 않을 때 발생합니다.

"Error: native lambda error:InvalidSignatureException: Signature expired: 20230118T161739Z is now earlier than 20230118T161739Z (20190318T162239Z - 5 min.)"

API 요청은 요청의 타임스탬프에서 5분 이내에 AWS에 도달해야 하며, 그렇지 않으면 AWS에서 요청을 거부합니다. 일부 시나리오에서는 클라이언트 시간을 서버 시간과 일치하도록 변경해도 이 문제를 해결할 수 없습니다.

해결 방법

AWS SDK를 사용하여 Lambda 함수를 동기식으로 호출하는 경우, 연결은 응답이 반환될 때까지 지속됩니다. Node.js SDK는 기본적으로 50개의 연결을 허용합니다. 연결 제한에 도달하면 SDK는 사용 가능한 연결이 있을 때까지 요청을 로컬에 대기시킵니다. 서명 만료 오류를 받은 경우 연결 제한에 도달할 수 있으며 다음 작업도 마찬가지입니다.

  • Lambda 함수가 스로틀링되지 않습니다.
  • 클라이언트 시간이 정확합니다.
  • (Node.js SDK만 해당) 호출 시 시간이 수정되도록 클라이언트를 만들 때 correctClockSkew:true 옵션이 설정되었습니다.
  • Lambda 함수가 빠른 속도로 호출되고 오랜 시간 동안 실행됩니다.
  • Lambda 함수가 빠른 속도로 호출됩니다.

SDK는 요청에 서명한 다음 사용 가능한 연결을 기다리는 대기열에 요청을 넣습니다. 대기열이 너무 커져서 요청이 5분 이상 보류되면 서명이 만료됩니다. 서명이 만료되었으므로 추가 요청은 실패합니다.

이 문제를 해결하려면 호출의 응답이 필요하지 않은 경우 Lamda에 비동기 호출을 사용하는 것을 고려하세요. 이렇게 하면 SDK가 요청을 호출하는 데만 연결을 사용할 수 있으며 응답을 기다리지 않습니다.

또한 SDK에서 허용하는 최대 연결 수를 늘릴 수도 있습니다.

참고: 연결이 추가되면 Lambda 함수가 더 높은 속도로 호출할 수 있으므로 제한이 발생할 수 있습니다.

관련 정보

Lambda 애플리케이션 모니터링 및 문제 해결

Lambda 함수 호출 시간 초과 오류를 해결하려면 어떻게 해야 하나요?

Lambda 함수가 시간 초과되었는지 확인하려면 어떻게 해야 하나요?

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음

관련 콘텐츠