AWS Lambda 문제

3284 단어 lambdaawsgotcha
이 게시물에는 AWS Lambda에 대한 몇 가지 문제가 포함되어 있습니다.

1) Lambda Python 런타임 - Python 3.6/3.7은 Amazon Linux 1이고 Python 3.8/3.9는 Amazon Linux 2입니다.



Python 3.6/3.7은 Amazon Linux 1이고 Python 3.8/3.9는 Amazon Linux 2입니다.

일반적으로 Python 3.6에서 3.9로 업그레이드하는 것이 좋습니다.

그러나 약간의 변경이 필요한 경우가 있습니다. 예를 들어, 일부 시스템 호출을 활용하는 코드가 있는 경우. curl - curl는 기본적으로 Amazon Linux 2에 설치되지 않습니다.

2) AWS CLI가 람다 호출을 사용하는 페이로드 매개변수에서 유효한 JSON을 허용하지 않음


Invalid base64: 와 같은 오류가 표시되면 awscli 2부터 Lambda 함수를 호출할 때 페이로드를 base64로 인코딩해야 하기 때문일 수 있습니다.

By default, the AWS CLI version 2 now passes all binary input and binary output parameters as base64-encoded strings. A parameter that requires binary input has its type specified as blob (binary large object) in the documentation.


--cli-binary-format raw-in-base64-out 도 전달해야 합니다. 예를 들어:

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


또한보십시오
  • https://github.com/aws/aws-cli/issues/4968
  • https://stackoverflow.com/questions/60310607/amazon-aws-cli-not-allowing-valid-json-in-payload-parameter

  • 3) Lambda 함수에서 ping을 할 수 없습니다.



    참조AWS Lambda FAQs

    Lambda attempts to impose as few restrictions as possible on normal language and operating system activities, but there are a few activities that are disabled: Inbound network connections are blocked by AWS Lambda, and for outbound connections, only TCP/IP and UDP/IP sockets are supported, and ptrace (debugging) system calls are blocked. TCP port 25 traffic is also blocked as an anti-spam measure.



    4) 업로드된 Lambda 함수에 대한 코드 스토리지( CodeStorageExceededException )



    Lambda 서비스는 함수 코드를 계정 전용 내부 S3 버킷에 저장합니다. 각 AWS 계정에는 각 리전에 75GB의 스토리지가 할당됩니다(최대 테라바이트까지 늘릴 수 있음). 코드 스토리지에는 Lambda 함수와 계층 모두에서 사용하는 총 스토리지가 포함됩니다. 할당량에 도달하면 새 기능을 배포하려고 할 때 CodeStorageExceededException를 수신합니다.

    Lambda quotas을 참조하십시오.

    사용된 스토리지를 보려면
  • AWS Lambda 콘솔 > 대시보드에서

  • AWS CLI에서:

    aws lambda list-versions-by-function --function-name myTestFunction
    aws lambda get-layer-version --layer-version --layer-name TestLayer --version-number 2
    

    이것은 $LATEST 버전과 함께 함수/계층의 각 게시된 버전을 반환합니다. CodeSize 특성은 이 함수/계층의 코드 저장소에서 사용하는 총 바이트 수를 보여줍니다.

  • Monitoring Lambda code storage을 참조하십시오.

    좋은 웹페이지 즐겨찾기