Python을 사용하여 Lambda 함수 빌드 - AWS Lambda

Python을 사용하여 Lambda 함수 빌드

AWS Lambda에서 Python 코드를 실행할 수 있습니다. Lambda는 이벤트 처리를 위해 코드를 실행하는 Python을 위한 런타임을 제공합니다. 코드는 사용자가 관리하는 AWS Identity and Access Management(IAM) 역할의 자격 증명을 사용하여 SDK for Python(Boto3)이 포함된 환경에서 실행됩니다. Python 런타임에 포함된 SDK 버전에 대해 자세히 알아보려면 런타임에 포함된 SDK 버전 섹션을 참조하세요.

Lambda는 다음과 같은 Python 런타임을 지원합니다.

명칭 식별자 운영 체제 사용 중단 날짜 블록 함수 생성 블록 함수 업데이트

Python 3.12

python3.12

Amazon Linux 2023

예약되지 않음

예약되지 않음

예약되지 않음

Python 3.11

python3.11

Amazon Linux 2

예약되지 않음

예약되지 않음

예약되지 않음

Python 3.10

python3.10

Amazon Linux 2

예약되지 않음

예약되지 않음

예약되지 않음

Python 3.9

python3.9

Amazon Linux 2

예약되지 않음

예약되지 않음

예약되지 않음

Python 함수를 만들려면
  1. Lambda 콘솔을 엽니다.

  2. 함수 생성(Create function)을 선택합니다.

  3. 다음 설정을 구성합니다:

    • 함수 이름: 함수의 이름을 입력합니다.

    • 런타임: Python 3.12를 선택합니다.

  4. 함수 생성(Create function)을 선택합니다.

  5. 테스트 이벤트를 구성하려면 테스트를 선택합니다.

  6. 이벤트 이름test를 입력합니다.

  7. Save changes(변경 사항 저장)를 선택합니다.

  8. 함수를 호출하려면 테스트를 선택합니다.

콘솔은 lambda_function(이)라는 단일 소스 파일로 Lambda 함수를 생성합니다. 이 파일을 편집하고 기본 제공 코드 편집기에서 더 많은 파일을 추가할 수 있습니다. 변경 사항을 저장하려면 [Save]를 선택합니다. 그런 다음 코드를 실행하려면 테스트를 선택합니다.

Lambda 함수는 CloudWatch Logs 로그 그룹을 함께 제공됩니다. 함수 런타임은 각 호출에 대한 세부 정보를 CloudWatch Logs에 보냅니다. 호출 중 함수가 출력하는 로그를 전달합니다. 함수가 오류를 반환하면 Lambda은 오류에 서식을 지정한 후 이를 호출자에게 반환합니다.

런타임에 포함된 SDK 버전

Python 런타임에 포함된 AWS SDK 버전은 런타임 버전 및 사용자의 AWS 리전에 따라 달라집니다. 사용 중인 런타임에 포함된 SDK 버전을 찾으려면 다음 코드를 사용하여 Lambda 함수를 생성합니다.

import boto3 import botocore def lambda_handler(event, context): print(f'boto3 version: {boto3.__version__}') print(f'botocore version: {botocore.__version__}')

응답 형식

Python 3.12 이상 버전의 Python 런타임에서 함수는 JSON 응답의 일부로 유니코드 문자를 반환합니다. 이전 Python 런타임에서는 응답에 유니코드 문자의 이스케이프된 시퀀스를 반환했습니다. 예를 들어, Python 3.11에서 'こんにちは'와 같은 유니코드 문자열을 반환하는 경우 유니코드 문자를 이스케이프하고 '\u3053\u3093\u306b\u3061\u306f'를 반환합니다. Python 3.12 런타임은 원래 'こんにちは'를 반환합니다.

유니코드 응답을 사용하면 Lambda 응답 크기가 줄어들어 동기 함수에서 더 큰 응답을 최대 6MB의 페이로드 크기에 더 쉽게 맞출 수 있습니다. 이전 예제에서 이스케이프된 버전은 32바이트이며, 유니코드 문자열의 경우 17바이트입니다.

Python 3.12로 업그레이드할 때 새 응답 형식을 고려하여 코드를 조정해야 할 수 있습니다. 직접 호출자에서 이스케이프된 유니코드를 예상하는 경우 반환 함수에 코드를 추가하여 유니코드를 수동으로 이스케이프하거나 직접 호출자가 유니코드 반환을 처리하도록 조정해야 합니다.

확장의 정상 종료

Python 3.12 이상 버전의 Python 런타임에서는 외부 확장을 포함하는 함수에 대해 향상된 정상 종료 기능을 제공합니다. Lambda는 실행 환경을 종료할 때 SIGTERM 신호를 런타임에 전송한 다음, SHUTDOWN 이벤트를 등록된 각 외부 확장에 전송합니다. Lambda 함수에서 SIGTERM 신호를 포착하여 함수에서 생성된 데이터베이스 연결과 같은 리소스를 정리할 수 있습니다.

실행 환경 수명 주기에 대한 자세한 내용은 Lambda 실행 환경 수명 주기에 대한 이해 섹션을 참조하세요. 확장과 함께 정상 종료를 사용하는 방법의 예제는 AWS Samples GitHub repository를 참조하세요.