

# 耐久関数のサポートされているランタイム
<a name="durable-supported-runtimes"></a>

耐久性のある関数は、ランタイムバージョンの柔軟性を高めるために、選択したマネージドランタイムと OCI コンテナイメージで使用できます。Node.js および Python の耐久性のある関数は、マネージドランタイムを使用してコンソールで直接作成するか、infrastructure-as-code を使用してプログラムで作成できます。Java 版の耐久性のある関数は現在プレビュー中のため、デプロイにはコンテナイメージを使用する必要があります。

## Lambda マネージドランタイム
<a name="durable-managed-runtimes"></a>

Lambda コンソールで関数を作成する場合、または AWS CLI で `--durable-config '{"ExecutionTimeout": 3600, "RetentionPeriodInDays": 7}'` パラメータを指定して関数を作成する場合、以下のマネージドランタイムが耐久関数をサポートします。Lambda ランタイムの詳細については、「[Lambda ランタイム](lambda-runtimes.md)」を参照してください。


| Language | ランタイム | 
| --- | --- | 
| Node.js | nodejs22.x | 
| Node.js | nodejs24.x | 
| Python | python3.13 | 
| Python | python3.14 | 

**注記**  
Lambda ランタイムには、テストおよび開発用の耐久性のある実行 SDK が含まれています。ただし、本番稼働用のデプロイパッケージに SDK を含めることをお勧めします。これにより、バージョンの一貫性が確保され、関数の動作に影響を与える可能性のあるランタイム更新を回避できます。

### Node.js
<a name="durable-runtime-nodejs"></a>

Node.js プロジェクトに SDK をインストールする:

```
npm install @aws/durable-execution-sdk-js
```

SDK は JavaScript と TypeScript をサポートしています。TypeScript プロジェクトの場合、SDK にはタイプ定義が含まれます。

### Python
<a name="durable-runtime-python"></a>

Python プロジェクトに SDK をインストールする:

```
pip install aws-durable-execution-sdk-python
```

Python SDK は同期メソッドを使用し、`async/await` は必要ありません。

### Java (プレビュー)
<a name="durable-runtime-java"></a>

依存関係を `pom.xml` に追加する:

```
<dependency>
    <groupId>software.amazon.lambda.durable</groupId>
    <artifactId>aws-durable-execution-sdk-java</artifactId>
    <version>VERSION</version>
</dependency>
```

Java プロジェクトに SDK をインストールする:

```
mvn install
```

Java SDK のプレビュー版が利用可能です。waitForCondition、waitForCallback、並列およびマップオペレーションはまだ開発中です。

## コンテナイメージ
<a name="durable-container-images"></a>

コンテナイメージで耐久関数を使用して、追加のランタイムバージョンまたはカスタムランタイム設定をサポートできます。コンテナイメージを使用すると、マネージドランタイムとして使用できないランタイムバージョンを使用したり、ランタイム環境をカスタマイズしたりできます。

コンテナイメージを使用した耐久関数を作成するには:

1. Lambda ベースイメージに基づいて Dockerfile を作成する

1. コンテナに耐久性のある実行 SDK をインストールする

1. コンテナイメージを構築して Amazon Elastic Container Registry にプッシュする

1. 耐久性のある実行を有効にしたコンテナイメージから Lambda 関数を作成する

### コンテナの例
<a name="durable-container-python"></a>

Dockerfile を作成する:

------
#### [ 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
```

------
#### [ Java (Preview) ]

Java 25 用の Dockerfile を作成する:

```
FROM --platform=linux/amd64 public.ecr.aws/lambda/java:25

# Install Maven
RUN dnf install -y maven

WORKDIR /var/task

# Copy Maven configuration and source code
COPY pom.xml .
COPY src ./src

# Build
RUN mvn clean package -DskipTests

# Move JAR to lib directory
RUN mv target/*.jar lib/

# Set the handler
CMD ["src.path.to.lambdaFunction::handler"]
```

------

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": 3600, "RetentionPeriodInDays": 7}'
```

Lambda によるコンテナイメージの使用に関する詳細については、「Lambda デベロッパーガイド」の「[コンテナイメージを使用した Lambda 関数の作成](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html)」を参照してください。

## ランタイムの考慮事項
<a name="durable-runtime-considerations"></a>

**SDK バージョン管理:** デプロイパッケージまたはコンテナイメージに耐久性のある実行 SDK が含まれます。これにより、関数が特定の SDK バージョンを使用し、ランタイム更新の影響を受けなくなります。`package.json` または `requirements.txt` で SDK バージョンをピン留めして、アップグレード時に制御します。

**ランタイムの更新:** AWS はマネージドランタイムを更新して、セキュリティパッチとバグ修正を含めます。これらの更新には、新しい SDK バージョンが含まれる場合があります。予期しない動作を回避するには、SDK をデプロイパッケージに含め、本番環境にデプロイする前に徹底的にテストします。

**コンテナイメージサイズ:** コンテナイメージの最大非圧縮サイズは 10 GB です。耐久性のある実行 SDK は、イメージに最小サイズを追加します。多段式ビルドを使用し、不要な依存関係を削除して、コンテナを最適化します。

**コールドスタートの性能:** コンテナイメージは、マネージドランタイムよりもコールドスタート時間が長くなる場合があります。耐久性のある実行 SDK を使用しても、コールドスタート性能への影響をほとんどありません。アプリケーションにとってコールドスタートレイテンシーが重要な場合は、プロビジョニングされた同時実行を使用します。