

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Runtime yang didukung untuk fungsi yang tahan lama
<a name="durable-supported-runtimes"></a>

Fungsi tahan lama tersedia untuk runtime terkelola yang dipilih dan gambar wadah OCI untuk fleksibilitas versi runtime tambahan. Anda dapat membuat fungsi tahan lama untuk Node.js, Python, Java, dan C\# (.NET) menggunakan runtime terkelola langsung di konsol atau secara terprogram melalui infrastruktur-as-code.

## Runtime yang dikelola Lambda
<a name="durable-managed-runtimes"></a>

Runtime terkelola berikut mendukung fungsi tahan lama saat Anda membuat fungsi di konsol Lambda atau menggunakan AWS CLI dengan parameter. `--durable-config '{"ExecutionTimeout": 3600, "RetentionPeriodInDays": 7}'` Untuk informasi lengkap tentang runtime Lambda, lihat runtime [ Lambda. ](lambda-runtimes.md)


| Bahasa | Waktu Aktif | 
| --- | --- | 
| Node.js | nodejs22.x | 
| Node.js | nodejs24.x | 
| Python | python3.13 | 
| Python | python3.14 | 
| Java | java17 | 
| Java | java21 | 
| Java | java25 | 
| C\# (.NET) | dotnet8 | 
| C\# (.NET) | dotnet10 | 

**catatan**  
Runtime Lambda Node.js dan Python menyertakan SDK eksekusi tahan lama untuk pengujian dan pengembangan. Namun, sebaiknya sertakan SDK dalam paket penerapan Anda untuk produksi. Ini memastikan konsistensi versi dan menghindari pembaruan runtime potensial yang mungkin memengaruhi perilaku fungsi Anda. Karena Java dan C\# (.NET) adalah bahasa yang dikompilasi, runtime Lambda Java dan.NET tidak menyertakan SDK eksekusi tahan lama, sehingga harus disertakan dalam paket penerapan Anda.

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

Instal SDK di Node.js proyek Anda:

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

SDK mendukung JavaScript dan TypeScript. Untuk TypeScript proyek, SDK menyertakan definisi tipe.

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

Instal SDK di proyek Python Anda:

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

Python SDK menggunakan metode sinkron dan tidak memerlukan`async/await`.

### Java
<a name="durable-runtime-java"></a>

Tambahkan ketergantungan ke`pom.xml`:

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

Instal SDK di proyek Java Anda:

```
mvn install
```

Java SDK menyediakan versi sinkron dan asinkron dari setiap metode.

### C\# (.NET)
<a name="durable-runtime-dotnet"></a>

Tambahkan SDK ke proyek.NET Anda:

```
dotnet add package Amazon.Lambda.DurableExecution
```

.NET SDK mengekspos operasi yang tahan lama melalui`IDurableContext`. Handler Anda menerima amplop layanan eksekusi tahan lama dan mendelegasikannya`DurableFunction.WrapAsync`. Setiap badan operasi membutuhkan`CancellationToken`.

## Image kontainer
<a name="durable-container-images"></a>

Anda dapat menggunakan fungsi tahan lama dengan gambar kontainer untuk mendukung versi runtime tambahan atau konfigurasi runtime khusus. Gambar kontainer memungkinkan Anda menggunakan versi runtime yang tidak tersedia sebagai runtime terkelola atau menyesuaikan lingkungan runtime Anda.

Untuk membuat fungsi tahan lama menggunakan gambar wadah:

1. Buat Dockerfile berdasarkan gambar dasar Lambda

1. Instal SDK eksekusi tahan lama di wadah Anda

1. Buat dan dorong gambar kontainer ke Amazon Elastic Container Registry

1. Buat fungsi Lambda dari gambar kontainer dengan eksekusi tahan lama diaktifkan

### Contoh kontainer
<a name="durable-container-python"></a>

Buat Dockerfile:

------
#### [ Python ]

Buat Dockerfile untuk Python 3.11:

```
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" ]
```

Buat `requirements.txt` file:

```
aws-durable-execution-sdk-python
```

------
#### [ Java ]

Buat Dockerfile untuk Java 25:

```
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"]
```

------

Bangun dan dorong gambar:

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

Buat fungsi dengan eksekusi tahan lama diaktifkan:

```
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}'
```

Untuk informasi selengkapnya tentang menggunakan gambar kontainer dengan Lambda, lihat [ Membuat gambar wadah Lambda ](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html) di Panduan Pengembang Lambda.

## Pertimbangan runtime
<a name="durable-runtime-considerations"></a>

**Manajemen versi SDK: ** Untuk mempertahankan kontrol penuh atas dependensi Anda dan untuk menghindari kemungkinan masalah ketidakselarasan versi, kami sarankan Anda menambahkan semua dependensi fungsi Anda ke paket penerapan Anda, bahkan jika versinya disertakan dalam runtime Lambda secara default. Ini termasuk SDK eksekusi tahan lama. Kunci SDK eksekusi tahan lama ke versi utama di file ketergantungan Anda. Versi utama baru dapat memperkenalkan perubahan yang dapat mengakibatkan kegagalan eksekusi dalam penerbangan. Gunakan versi bernomor atau alias untuk fungsi produksi tahan lama daripada `$LATEST` memastikan perubahan versi SDK tidak memengaruhi eksekusi dalam penerbangan.

**Pembaruan runtime: ** AWS memperbarui runtime terkelola untuk menyertakan patch keamanan dan perbaikan bug. Pembaruan ini mungkin menyertakan versi SDK baru. Untuk menghindari perilaku yang tidak terduga, sertakan SDK dalam paket penerapan Anda dan uji secara menyeluruh sebelum menerapkan ke produksi.

**Ukuran gambar kon ** tainer: Gambar kontainer memiliki ukuran tidak terkompresi maksimum 10 GB. SDK eksekusi tahan lama menambahkan ukuran minimal ke gambar Anda. Optimalkan wadah Anda dengan menggunakan build multi-tahap dan menghapus dependensi yang tidak perlu.

**Kinerja start dingin: Gambar ** kontainer mungkin memiliki waktu start dingin yang lebih lama daripada runtime yang dikelola. SDK eksekusi tahan lama memiliki dampak minimal pada kinerja cold start. Gunakan konkurensi yang disediakan jika latensi start dingin sangat penting untuk aplikasi Anda.