Lambda 함수 오류 문제를 해결하려면 어떻게 해야 하나요?

6분 분량
0

AWS Lambda 함수를 호출하려고 하면 호출이 실패하고 오류가 반환됩니다.

해결 방법

Lambda 함수 장애 문제를 해결하려면 이 문서에 나열된 AWS 서비스 및 기능을 한 개 이상 사용하여 오류의 원인을 파악하세요. 그런 다음 제공된 링크를 따라 각 문제에 대한 문제 해결 모범 사례를 검토하세요.

네트워킹 오류 식별 및 문제 해결

Lambda 네트워킹 구성에 문제가 있는 경우 여러 유형의 오류가 나타납니다. 다음은 가장 일반적인 Lambda 네트워킹 관련 오류 중 일부입니다.

함수가 Virtual Private Cloud(VPC)에 있지 않은데 프라이빗 DNS 이름을 사용하여 리소스에 액세스하려고 하면 다음 오류가 표시됩니다.

UnknownHostException
Error: getaddrinfo ENOTFOUND

함수가 VPC에 있는데 인터넷 접속이 끊기거나 제한 시간이 초과되면 다음 오류가 표시됩니다.

connect ETIMEDOUT 176.32.98.189:443
Task timed out after 10.00 seconds

함수가 속한 VPC가 탄력적 네트워크 인터페이스 한도에 도달하면 다음 오류가 표시됩니다.

ENILimitReachedException: The elastic network interface limit was reached for the function's VPC.

TCP(Transmission Control Protocol) 연결이 끊어지면 다음 오류가 표시됩니다.

Connection reset by peer
ECONNRESET
ECONNREFUSED

Lambda 네트워킹 오류 문제 해결

1.    함수가 Amazon Virtual Private Cloud(VPC)에 도달하려고 하는 엔드포인트에 대해 유효한 네트워크 경로가 있는지 확인합니다. 자세한 내용은 VPC의 리소스에 액세스하도록 Lambda 함수 구성을 참조하세요.

2.    함수에서 인터넷에 액세스할 수 있는지 확인합니다. 자세한 내용은 Amazon VPC에 연결된 함수에 인터넷 액세스 권한을 부여하려면 어떻게 해야 하나요?를 참조하세요. Amazon VPC에 있는 Lambda 함수의 제한 시간 문제를 해결하려면 어떻게 해야 하나요?도 참조하세요.

3.    DNS 확인 관련 문제를 해결하려면 VPC가 프라이빗 리소스 액세스를 지원하도록 구성되어 있는지 확인하세요. AWS에서 제공하는 DNS를 사용하지 않는 경우 EC2 인스턴스를 사용하여 사용자 지정 제공 DHCP 옵션이 DNS 이름을 올바르게 확인하는지 확인하세요. 자세한 내용은 DNS는 어떻게 작동하고 부분적 또는 간헐적인 DNS 장애 문제는 어떻게 해결하나요?를 참조하세요.

참고: VPC 구성을 검토한 후에도 함수 코드가 퍼블릭 엔드포인트에 도달하지 못하는 이유를 확인할 수 없다면 VPC 흐름 로그를 켜세요. VPC 흐름 로그를 사용하면 VPC로 들어오고 나가는 모든 네트워크 트래픽을 볼 수 있습니다. 또한 VPC 흐름 로그를 사용하면 특정 요청이 거부되거나 라우팅되지 않은 이유도 확인할 수 있습니다. 자세한 내용은 Lambda의 네트워킹 문제 해결을 참조하세요.

권한 오류 식별 및 문제 해결

Lambda 배포 패키지의 보안 권한이 올바르지 않은 경우 다음 오류 중 하나가 표시됩니다.

  • EACCES: permission denied, open '/var/task/index.js'
  • cannot load such file -- function
  • [Errno 13] Permission denied: '/var/task/function.py'

Lambda 런타임에는 배포 패키지의 파일을 읽을 수 있는 권한이 필요합니다. chmod 명령을 사용하여 파일 모드를 변경할 수 있습니다. 다음 예제 명령은 모든 사용자가 현재 디렉터리의 모든 파일과 폴더를 읽을 수 있도록 합니다.

chmod -R o+rX .

자세한 내용은 Lambda의 배포 문제 해결을 참조하세요.

AWS Identity and Access Management(IAM) 자격 증명에 함수를 호출할 권한이 없는 경우 다음 오류가 발생합니다.

User: arn:aws:iam::123456789012:user/developer is not authorized to perform: lambda:InvokeFunction on resource: my-function

Lambda 권한 오류 문제 해결

AWS CloudTrail에서 Lambda 로그 파일 항목을 검토하세요. Lambda를 호출하는 요청자는 함수를 호출하는 데 필요한 IAM 권한이 있어야 합니다. 필요한 권한을 부여하려면 Lambda 함수 권한을 업데이트하세요.

자세한 내용은 다음을 참조하세요.

코드 오류 식별 및 문제 해결

Lambda 코드에 문제가 있는 경우 여러 유형의 오류가 나타납니다. 다음은 가장 일반적인 몇몇 Lambda 코드 관련 오류입니다.

  • Unable to marshal response: Object of type AttributeError is not JSON serializable
  • Issue: The AWS SDK included on the runtime is not the latest version
  • (Node.js) Function returns before code finishes executing
  • KeyError

Lambda 코드 오류 문제 해결

1.    Lambda용 Amazon CloudWatch Logs를 검토하세요.

CloudWatch를 사용하여 함수 코드에서 생성된 모든 로그를 보고 잠재적 문제를 식별할 수 있습니다. 자세한 내용은 AWS Lambda용 Amazon CloudWatch Logs 액세스를 참조하세요. 함수 로깅에 대한 자세한 내용은 사용 중인 프로그래밍 언어의 다음 Lambda 함수 로깅 지침을 참조하세요.

참고: 함수가 스택 추적을 반환하는 경우 스택 추적의 오류 메시지가 오류의 원인을 지정합니다.

2.    AWS X-Ray를 사용하여 코드 성능 병목 현상을 식별하세요. Lambda 함수가 다운스트림 AWS 리소스, 마이크로서비스, 데이터베이스 또는 HTTP 웹 API를 사용하는 경우 AWS X-Ray를 사용하여 코드 성능 문제를 해결할 수 있습니다. 자세한 내용은 AWS X-Ray에서 AWS Lambda 사용을 참조하세요.

3.    함수의 배포 패키지가 필요한 모든 종속성을 가져올 수 있는지 확인합니다. 사용 중인 프로그래밍 언어의 Lambda 배포 패키지 지침을 따르세요.

참고: 또한 Lambda 계층을 사용하여 배포 패키지 외부에 있는 종속성을 추가할 수 있습니다.

4.    (컨테이너 이미지로 배포된 코드의 경우) 런타임 인터페이스 클라이언트를 설치하고 이미지를 올바르게 배포하고 있는지 확인합니다. 사용 중인 프로그래밍 언어의 컨테이너 이미지 지침을 따르세요.

제한 오류 식별 및 문제 해결

함수에 병목 현상이 발생하면 다음 오류가 표시됩니다.

Rate exceeded
429 TooManyRequestsException

Lambda 제한 오류 문제 해결

Lambda에 대한 CloudWatch 지표를 검토하세요. 자세한 내용은 Lambda 함수 지표를 사용한 작업을 참조하세요.

모니터링할 주요 지표:

  • ConcurrentExecutions
  • UnreservedConcurrentExecutions
  • Throttles

참고: 함수 간접 호출 요청이 해당 함수가 동시성 한도를 조정 또는 초과할 수 있는 속도보다 빨리 도착하면 요청이 실패하고 429 제한 오류가 발생합니다. 자세한 내용은 Lambda 함수 크기 조정을 참조하세요. 또한 "Rate exceeded" 및 429 "TooManyRequestsException" 오류가 발생하는 Lambda 함수 제한 문제를 해결하려면 어떻게 해야 하나요?도 참조하세요.

모든 간접 호출 API 500 및 502 오류 식별 및 문제 해결

간접 호출 요청이 실패하면 다음과 같은 502 또는 500 서버 측 오류가 표시됩니다.

  • InvalidRuntimeException
  • InvalidSecurityGroupIDException
  • InvalidZipFileException
  • KMSAccessDeniedException
  • KMSNotFoundException
  • You have exceeded the maximum limit for Hyperplane ENIs for your account
  • SubnetIPAddressLimitReachedException

Lambda 간접 호출 API 500 및 502 오류 문제 해결

AWS Lambda에서 발생하는 HTTP 502 및 HTTP 500 상태 코드(서버 측) 오류를 해결하려면 어떻게 해야 하나요?의 지침을 따르세요. 가능한 오류 목록과 설명은 Lambda 간접 호출 API 참조의 오류를 참조하세요.

모든 컨테이너 이미지 오류 식별 및 문제 해결

컨테이너 이미지를 사용하고 있는데 컨테이너 이미지에 문제가 있는 경우 다음과 같은 오류가 표시됩니다.

  • "errorType": "Runtime.InvalidEntrypoint"
  • Error: You are using an AWS CloudFormation template, and your container ENTRYPOINT is being overridden with a null or empty value.

Lambda 컨테이너 이미지 오류 문제 해결

Lambda의 컨테이너 이미지 문제 해결에 나와 있는 지침을 따르세요.


관련 정보

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

Lambda의 오류 처리 및 자동 재시도

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

관련 콘텐츠