耐久関数のサポートされているランタイム
耐久関数は、Node.js および Python ランタイムに使用できます。Lambda コンソールでマネージドランタイムを使用して耐久関数を作成することも、コンテナイメージを使用してデプロイしてランタイムバージョンの柔軟性を高めることもできます。
Lambda マネージドランタイム
Lambda コンソールで関数を作成する場合、または AWS CLI で --durable-config '{"ExecutionTimeout": 10, "RetentionPeriodInDays":1}' パラメータを指定して関数を作成する場合、以下のマネージドランタイムが耐久関数をサポートします。Lambda ランタイムの詳細については、「Lambda ランタイム」を参照してください。
| Language | ランタイム |
|---|---|
| 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
Docker イメージをビルドおよびプッシュする:
# 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 をデプロイパッケージに含め、本番環境にデプロイする前に徹底的にテストします。
コンテナイメージサイズ: コンテナイメージの最大非圧縮サイズは 10 GB です。耐久性のある実行 SDK は、イメージに最小サイズを追加します。多段式ビルドを使用し、不要な依存関係を削除して、コンテナを最適化します。
コールドスタートの性能: コンテナイメージは、マネージドランタイムよりもコールドスタート時間が長くなる場合があります。耐久性のある実行 SDK を使用しても、コールドスタート性能への影響をほとんどありません。アプリケーションにとってコールドスタートレイテンシーが重要な場合は、プロビジョニングされた同時実行を使用します。