지속성 함수에 지원되는 런타임
Node.js 및 Python 런타임에 지속성 함수를 사용할 수 있습니다. Lambda 콘솔에서 관리형 런타임을 사용하여 지속성 함수를 생성하거나 컨테이너 이미지를 사용하여 배포하여 런타임 버전 유연성을 높일 수 있습니다.
Lambda 관리형 런타임
다음 관리형 런타임은 Lambda 콘솔에서 함수를 생성하거나 --durable-config '{"ExecutionTimeout": 10, "RetentionPeriodInDays":1}' 파라미터와 함께 AWS CLI를 사용할 때 지속성 함수를 지원합니다. Lambda 런타임에 대한 자세한 내용은 Lambda 런타임을 참조하세요.
| 언어 | 런타임 |
|---|---|
| Node.js | nodejs22.x |
| Node.js | nodejs24.x |
| Python | python3.13 |
| Python | python3.14 |
참고
Lambda 런타임에는 테스트 및 개발을 위한 지속성 실행 SDK가 포함되어 있습니다. 하지만 프로덕션용 배포 패키지에는 SDK를 포함하는 것이 좋습니다. 이를 통해 버전 일관성이 보장되고 함수 동작에 영향을 미칠 수 있는 잠재적 런타임 업데이트를 방지할 수 있습니다.
Node.js
Node.js 프로젝트에 SDK를 설치합니다.
npm install @aws/durable-execution-sdk-js
SDK는 JavaScript 및 TypeScript를 지원합니다. TypeScript 프로젝트의 경우 SDK에는 유형 정의가 포함됩니다.
Python
Python 프로젝트에 SDK를 설치합니다.
pip install aws-durable-execution-sdk-python
Python SDK는 동기식 메서드를 사용하며 async/await이 필요하지 않습니다.
컨테이너 이미지
컨테이너 이미지와 함께 지속성 함수를 사용하여 추가 런타임 버전 또는 사용자 지정 런타임 구성을 지원할 수 있습니다. 컨테이너 이미지를 사용하면 관리형 런타임으로 사용할 수 없는 런타임 버전을 사용하거나 런타임 환경을 사용자 지정할 수 있습니다.
컨테이너 이미지를 사용하여 지속성 함수를 생성합니다.
Lambda 기본 이미지를 기반으로 Dockerfile 생성
컨테이너에 지속성 실행 SDK 설치
컨테이너 이미지를 빌드하고 Amazon Elastic Container Registry에 푸시
지속성 실행이 활성화된 컨테이너 이미지에서 Lambda 함수 생성
Python 컨테이너 예제
Python 3.11용 Dockerfile을 생성합니다.
FROM public.ecr.aws/lambda/python:3.11 # Copy requirements file COPY requirements.txt ${LAMBDA_TASK_ROOT}/ # Install dependencies including durable SDK RUN pip install -r requirements.txt # Copy function code COPY lambda_function.py ${LAMBDA_TASK_ROOT}/ # Set the handler CMD [ "lambda_function.handler" ]
requirements.txt 파일을 생성합니다.
aws-durable-execution-sdk-python
이미지를 빌드하고 푸시합니다.
# Build the image docker build -t my-durable-function . # Tag for ECR docker tag my-durable-function:latest 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-durable-function:latest # Push to ECR docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-durable-function:latest
지속성 실행이 활성화된 함수를 생성합니다.
aws lambda create-function \ --function-name myDurableFunction \ --package-type Image \ --code ImageUri=123456789012.dkr.ecr.us-east-1.amazonaws.com/my-durable-function:latest \ --role arn:aws:iam::123456789012:role/lambda-execution-role \ --durable-config '{"ExecutionTimeout": 10, "RetentionPeriodInDays":1}'
Lambda에서의 컨테이너 이미지 사용에 대한 자세한 내용은 Lambda 개발자 안내서에서 Lambda 컨테이너 이미지 생성을 참조하세요.
런타임 고려 사항
SDK 버전 관리: 배포 패키지 또는 컨테이너 이미지에 지속성 실행 SDK를 포함합니다. 이를 통해 함수가 특정 SDK 버전을 사용하게 되고 런타임 업데이트의 영향을 받지 않습니다. package.json 또는 requirements.txt에서 SDK 버전을 고정하여 업그레이드 시기를 제어합니다.
런타임 업데이트: AWS는 보안 패치 및 버그 수정을 포함하여 관리형 런타임을 업데이트합니다. 업데이트에는 새 SDK 버전이 포함될 수 있습니다. 예기치 않은 동작을 방지하려면 배포 패키지에 SDK를 포함하고 프로덕션에 배포하기 전에 철저히 테스트해야 합니다.
컨테이너 이미지 크기: 컨테이너 이미지의 압축되지 않은 최대 크기는 10GB입니다. 지속성 실행 SDK는 이미지에 최소 크기를 추가합니다. 다중 스테이지 빌드를 사용하고 불필요한 종속성을 제거하여 컨테이너를 최적화하세요.
콜드 스타트 성능: 컨테이너 이미지는 관리형 런타임보다 콜드 스타트 시간이 길 수 있습니다. 지속성 실행 SDK는 콜드 스타트 성능에 미치는 영향을 최소화합니다. 콜드 스타트 지연 시간이 애플리케이션에 있어 중요한 경우 프로비저닝 동시성을 사용합니다.