

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

# Menyebarkan dan menjalankan fungsi Lambda yang tahan lama dengan AWS CLI
<a name="durable-getting-started-cli"></a>

Gunakan AWS CLI untuk membuat dan menerapkan fungsi tahan lama Lambda dengan perintah imperatif. Pendekatan ini memberi Anda kontrol langsung atas setiap langkah proses penyebaran.

## Prasyarat
<a name="durable-cli-prerequisites"></a>
+ Instal dan konfigurasikan AWS CLI. Untuk petunjuk, lihat [Menginstal AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).
+ Buat paket penerapan dengan kode fungsi Anda dan SDK eksekusi yang tahan lama.
+ Buat peran eksekusi IAM dengan izin pos pemeriksaan.

## Buat peran eksekusi
<a name="durable-cli-create-role"></a>

Buat peran IAM dengan izin untuk eksekusi Lambda dasar dan operasi pos pemeriksaan.

**Untuk membuat peran eksekusi**

1. Buat dokumen kebijakan kepercayaan yang memungkinkan Lambda untuk mengambil peran. Simpan ini sebagai`trust-policy.json`:

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "lambda.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

1. Buat peran:

   ```
   aws iam create-role \
     --role-name {{durable-function-role}} \
     --assume-role-policy-document file://trust-policy.json
   ```

1. Lampirkan kebijakan eksekusi tahan lama untuk operasi pos pemeriksaan dan eksekusi dasar:

   ```
   aws iam attach-role-policy \
     --role-name {{durable-function-role}} \
     --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicDurableExecutionRolePolicy
   ```

Kebijakan `AWSLambdaBasicDurableExecutionRolePolicy` terkelola mencakup izin yang diperlukan untuk operasi pos pemeriksaan (`lambda:CheckpointDurableExecution`dan`lambda:GetDurableExecutionState`) dan eksekusi Lambda dasar.

## Buat fungsi yang tahan lama
<a name="durable-cli-create-function"></a>

Buat fungsi tahan lama Anda dengan `--durable-config` parameter.

**Untuk membuat fungsi yang tahan lama**

1. Package kode fungsi Anda dengan dependensi ke dalam file.zip:

   ```
   zip -r function.zip index.mjs node_modules/
   ```
**catatan**  
Untuk fungsi tahan lama berbasis Java, Anda perlu mengkompilasi kode fungsi dan dependensi Anda ke dalam satu file.zip atau file Java Archive (JAR). Untuk informasi selengkapnya, lihat [Menerapkan fungsi Java Lambda dengan arsip file.zip atau JAR](java-package.md).

1. Buat fungsi dengan eksekusi tahan lama diaktifkan:

   ```
   aws lambda create-function \
     --function-name {{myDurableFunction}} \
     --runtime nodejs22.x \
     --role {{arn:aws:iam::123456789012:role/durable-function-role}} \
     --handler index.handler \
     --zip-file fileb://function.zip \
     --durable-config '{"ExecutionTimeout": 3600, "RetentionPeriodInDays": 7}'
   ```

**catatan**  
Anda hanya dapat mengaktifkan eksekusi yang tahan lama saat membuat fungsi. Anda tidak dapat mengaktifkannya pada fungsi yang ada.

## Publikasikan versi
<a name="durable-cli-publish-version"></a>

Meskipun fungsi tahan lama dapat dipanggil menggunakan kualifikasi `$LATEST` versi, Anda harus selalu menggunakan ARN yang memenuhi syarat yang menunjuk ke versi stabil untuk memastikan eksekusi kode Anda secara deterministik.

```
aws lambda publish-version \
  --function-name {{myDurableFunction}} \
  --description "Initial version"
```

Perintah mengembalikan versi ARN. Perhatikan nomor versi (misalnya,`:1`) di akhir ARN.

Secara opsional, buat alias yang menunjuk ke versi:

```
aws lambda create-alias \
  --function-name {{myDurableFunction}} \
  --name prod \
  --function-version 1
```

## Memanggil fungsi tahan lama
<a name="durable-cli-invoke"></a>

Panggil fungsi tahan lama Anda menggunakan ARN (versi atau alias) yang memenuhi syarat.

**catatan**  
**Pemanggilan idempoten:** Untuk mencegah eksekusi duplikat saat mencoba kembali pemanggilan yang gagal, Anda dapat memberikan nama eksekusi yang memastikan semantik eksekusi. at-most-once Lihat [Idempotency](durable-execution-idempotency.md) untuk detailnya.

**Invokasi sinkron**  
Untuk eksekusi yang selesai dalam 15 menit, gunakan pemanggilan sinkron:

```
aws lambda invoke \
  --function-name {{myDurableFunction:1}} \
  --payload '{"orderId": "order-12345"}' \
  --cli-binary-format raw-in-base64-out \
  response.json
```

Atau menggunakan alias:

```
aws lambda invoke \
  --function-name {{myDurableFunction:prod}} \
  --payload '{"orderId": "order-12345"}' \
  --cli-binary-format raw-in-base64-out \
  response.json
```

**Invokasi asinkron**  
Untuk eksekusi yang berjalan lama, gunakan pemanggilan asinkron:

```
aws lambda invoke \
  --function-name {{myDurableFunction:prod}} \
  --invocation-type Event \
  --payload '{"orderId": "order-12345"}' \
  --cli-binary-format raw-in-base64-out \
  response.json
```

Dengan pemanggilan asinkron, Lambda segera kembali. Fungsi terus dijalankan di latar belakang.

**catatan**  
Anda dapat menggunakan `$LATEST` untuk membuat prototipe dan pengujian di konsol. Untuk beban kerja produksi, gunakan versi atau alias yang diterbitkan.

## Kelola eksekusi yang tahan lama
<a name="durable-cli-manage-executions"></a>

Gunakan perintah berikut untuk mengelola dan memantau eksekusi fungsi yang tahan lama.

**Daftar eksekusi**  
Daftar semua eksekusi untuk fungsi yang tahan lama:

```
aws lambda list-durable-executions-by-function \
  --function-name {{myDurableFunction}}
```

**Dapatkan detail eksekusi**  
Dapatkan detail tentang eksekusi tertentu:

```
aws lambda get-durable-execution \
  --durable-execution-arn {{arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id}}
```

**Dapatkan riwayat eksekusi**  
Lihat riwayat pos pemeriksaan untuk eksekusi:

```
aws lambda get-durable-execution-history \
  --durable-execution-arn {{arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id}}
```

**Hentikan eksekusi**  
Hentikan eksekusi tahan lama yang berjalan:

```
aws lambda stop-durable-execution \
  --durable-execution-arn {{arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id}}
```

## Perbarui kode fungsi
<a name="durable-cli-update-function"></a>

Perbarui kode fungsi tahan lama Anda dan publikasikan versi baru:

**Untuk memperbarui dan mempublikasikan versi baru**

1. Perbarui kode fungsi:

   ```
   aws lambda update-function-code \
     --function-name {{myDurableFunction}} \
     --zip-file fileb://function.zip
   ```

1. Tunggu pembaruan selesai:

   ```
   aws lambda wait function-updated \
     --function-name {{myDurableFunction}}
   ```

1. Publikasikan versi baru:

   ```
   aws lambda publish-version \
     --function-name {{myDurableFunction}} \
     --description "Updated order processing logic"
   ```

1. Perbarui alias untuk menunjuk ke versi baru:

   ```
   aws lambda update-alias \
     --function-name {{myDurableFunction}} \
     --name prod \
     --function-version 2
   ```

**penting**  
Menjalankan eksekusi terus menggunakan versi yang mereka mulai. Pemanggilan baru menggunakan versi alias yang diperbarui.

## Lihat log fungsi
<a name="durable-cli-view-logs"></a>

Lihat log fungsi tahan lama Anda di CloudWatch Log:

```
aws logs tail /aws/lambda/myDurableFunction --follow
```

Filter log untuk eksekusi tertentu:

```
aws logs filter-log-events \
  --log-group-name /aws/lambda/myDurableFunction \
  --filter-pattern "exec-abc123"
```

## Pembersihan sumber daya
<a name="durable-cli-cleanup"></a>

Hapus fungsi tahan lama dan sumber daya terkait:

```
# Delete the function
aws lambda delete-function --function-name {{myDurableFunction}}

# Delete the IAM role policies
aws iam detach-role-policy \
  --role-name {{durable-function-role}} \
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

aws iam detach-role-policy \
  --role-name {{durable-function-role}} \
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicDurableExecutionRolePolicy

# Delete the role
aws iam delete-role --role-name {{durable-function-role}}
```

## Langkah selanjutnya
<a name="durable-cli-next-steps"></a>

Setelah menerapkan fungsi tahan lama Anda dengan: AWS CLI
+ Memantau eksekusi menggunakan perintah `list-durable-executions-by-function` dan `get-durable-execution`
+ Lihat operasi pos pemeriksaan dalam peristiwa AWS CloudTrail data
+ Siapkan CloudWatch alarm untuk kegagalan eksekusi atau eksekusi yang berjalan lama
+ Mengotomatiskan penerapan menggunakan skrip shell atau pipeline CI/CD 

Untuk informasi selengkapnya tentang AWS CLI perintah untuk Lambda, lihat Referensi [AWS CLI Perintah](https://docs.aws.amazon.com/cli/latest/reference/lambda/index.html).