

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

# Memodifikasi lingkungan waktu pengoperasian
<a name="runtimes-modify"></a>

Anda dapat menggunakan [ekstensi internal](lambda-extensions.md) untuk memodifikasi proses waktu pengoperasian. Ekstensi internal bukan proses terpisah—ekstensi ini berjalan sebagai bagian dari proses waktu pengoperasian.

Lambda menyediakan [variabel lingkungan](configuration-envvars.md) spesifik bahasa yang dapat Anda atur untuk menambahkan opsi dan alat pada waktu pengoperasian. Lambda juga menyediakan [skrip pembungkus](#runtime-wrapper), yang memungkinkan Lambda mendelegasikan startup waktu pengoperasian ke skrip Anda. Anda dapat membuat skrip pembungkus untuk mengustomisasikan perilaku startup waktu pengoperasian.

## Variabel lingkungan spesifik bahasa
<a name="runtimes-envvars"></a>

Lambda mendukung cara konfigurasi saja untuk mengaktifkan kode yang akan dipramuat selama inisialisasi fungsi melalui variabel lingkungan spesifik bahasa berikut:
+ `JAVA_TOOL_OPTIONS`— Di Java, Lambda mendukung variabel lingkungan ini untuk mengatur variabel baris perintah tambahan di Lambda. Variabel lingkungan ini memungkinkan Anda menentukan inisialisasi alat, khususnya peluncuran agen bahasa pemrograman asli atau Java menggunakan opsi `agentlib` atau `javaagent`. Untuk informasi selengkapnya, lihat [variabel `JAVA_TOOL_OPTIONS` lingkungan](https://docs.aws.amazon.com/lambda/latest/dg/java-customization.html#java-tool-options).
+ `NODE_OPTIONS`- Tersedia di [runtime Node.js](lambda-nodejs.md).
+ `DOTNET_STARTUP_HOOKS` – Pada NET Core 3.1 dan di atas, variabel lingkungan ini menentukan jalur ke rakitan (dll) yang dapat Lambda gunakan.

Menggunakan variabel lingkungan spesifik bahasa adalah cara yang lebih disukai untuk mengatur properti startup.

## Skrip pembungkus
<a name="runtime-wrapper"></a>

Anda dapat membuat *skrip pembungkus* untuk mengustomisasikan perilaku startup waktu pengoperasian fungsi Lambda. Skrip pembungkus memungkinkan Anda mengatur parameter konfigurasi yang tidak dapat diatur melalui variabel lingkungan spesifik bahasa.

**catatan**  
Invokasi dapat gagal jika skrip pembungkus tidak berhasil memulai proses waktu pengoperasian.

[Skrip pembungkus didukung pada semua runtime Lambda asli.](lambda-runtimes.md) Skrip pembungkus tidak didukung pada [Runtime khusus OS](runtimes-provided.md) (keluarga `provided` runtime).

Saat Anda menggunakan skrip pembungkus untuk fungsi, Lambda memulai waktu pengoperasian menggunakan skrip Anda. Lambda mengirim ke skrip Anda jalur ke interpreter dan semua argumen asli untuk startup waktu pengoperasian standar. Skrip Anda dapat memperluas atau mengubah perilaku startup program. Misalnya, skrip dapat menyuntikkan dan mengubah argumen, mengatur variabel lingkungan, atau menangkap metrik, kesalahan, dan informasi diagnostik lainnya.

Anda menentukan skrip dengan mengatur nilai dari variabel lingkungan `AWS_LAMBDA_EXEC_WRAPPER` sebagai jalur sistem file dari biner atau skrip yang dapat dijalankan.

### Contoh: Buat dan gunakan skrip pembungkus sebagai lapisan Lambda
<a name="runtime-wrapper-example"></a>

Dalam contoh berikut, Anda membuat skrip pembungkus untuk memulai interpreter Python dengan opsi `-X importtime`. Saat Anda menjalankan fungsi, Lambda membuat entri log untuk menampilkan durasi waktu impor untuk tiap impor.

**Untuk membuat dan menggunakan skrip pembungkus sebagai lapisan**

1. Buat direktori untuk layer:

   ```
   mkdir -p python-wrapper-layer/bin
   cd python-wrapper-layer/bin
   ```

1. Dalam `bin` direktori, paste kode berikut ke dalam file baru bernama`importtime_wrapper`. Ini adalah skrip pembungkus.

   ```
   #!/bin/bash
   
   # the path to the interpreter and all of the originally intended arguments
   args=("$@")
   
   # the extra options to pass to the interpreter
   extra_args=("-X" "importtime")
   
   # insert the extra options
   args=("${args[@]:0:$#-1}" "${extra_args[@]}" "${args[@]: -1}")
   
   # start the runtime with the extra options
   exec "${args[@]}"
   ```

1. Berikan izin yang dapat dieksekusi skrip:

   ```
   chmod +x importtime_wrapper
   ```

1. Buat file.zip untuk layer:

   ```
   cd ..
   zip -r ../python-wrapper-layer.zip .
   ```

1. Konfirmasikan bahwa file.zip Anda memiliki struktur direktori berikut:

   ```
   python-wrapper-layer.zip
   └ bin
       └ importtime_wrapper
   ```

1. [Buat layer](creating-deleting-layers.md#layers-create) menggunakan paket.zip.

1. Buat fungsi menggunakan konsol Lambda.

   1. Buka [konsol Lambda](https://console.aws.amazon.com/lambda).

   1. Pilih **Buat fungsi**.

   1. Masukkan **nama Fungsi**.

   1. Untuk **Runtime, pilih runtime** Python **terbaru yang didukung**.

   1. Pilih **Buat fungsi**.

1. Tambahkan lapisan ke fungsi Anda.

   1. Pilih fungsi Anda, lalu pilih tab **Kode** jika belum dipilih.

   1. Gulir ke bawah ke bagian **Layers**, lalu pilih **Add a layer**.

   1. Untuk **sumber Layer**, pilih **Custom layers**, dan kemudian pilih layer Anda dari daftar dropdown **Custom layers**.

   1.  Untuk **Versi**, pilih **1**.

   1. Pilih **Tambahkan**.

1. Tambahkan variabel lingkungan pembungkus.

   1. Pilih tab **Konfigurasi**, lalu pilih **variabel Lingkungan**.

   1. Pada **Variabel lingkungan**, pilih **Edit**.

   1. Pilih **Tambahkan variabel lingkungan**.

   1. Untuk **Kunci**, masukkan `AWS_LAMBDA_EXEC_WRAPPER`.

   1. Untuk **Nilai**, masukkan `/opt/bin/importtime_wrapper` (`/opt/`\$1 struktur folder lapisan.zip Anda).

   1. Pilih **Simpan**.

1. Uji skrip pembungkus.

   1. Pilih tab **Uji**.

   1. Di bawah **acara Uji**, pilih **Uji**. Anda tidak perlu membuat acara pengujian—acara default akan berfungsi.

   1. Gulir ke bawah ke **Keluaran Log**. Karena skrip pembungkus Anda memulai interpreter Python dengan opsi `-X importtime`, log menunjukkan waktu yang diperlukan untuk setiap impor. Sebagai contoh:

      ```
      532 |           collections
      import time:        63 |         63 |           _functools
      import time:      1053 |       3646 |         functools
      import time:      2163 |       7499 |       enum
      import time:       100 |        100 |         _sre
      import time:       446 |        446 |           re._constants
      import time:       691 |       1136 |         re._parser
      import time:       378 |        378 |         re._casefix
      import time:       670 |       2283 |       re._compiler
      import time:       416 |        416 |       copyreg
      ```