Memodifikasi lingkungan waktu pengoperasian - AWS Lambda

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

Memodifikasi lingkungan waktu pengoperasian

Anda dapat menggunakan ekstensi internal untuk memodifikasi proses waktu pengoperasian. Ekstensi internal bukan proses terpisah—ekstensi ini berjalan sebagai bagian dari proses waktu pengoperasian.

Lambda menyediakan variabel lingkungan spesifik bahasa yang dapat Anda atur untuk menambahkan opsi dan alat pada waktu pengoperasian. Lambda juga menyediakan skrip pembungkus, 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

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.

  • NODE_OPTIONS- Tersedia di runtime Node.js.

  • 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

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. Skrip pembungkus tidak didukung pada Runtime khusus OS (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 dengan Python 3.8

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 gunakan skrip pembungkus dengan Python 3.8
  1. Untuk membuat skrip pembungkus, tempelkan kode berikut ke file bernama importtime_wrapper:

    #!/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[@]}"
  2. Untuk memberi skrip izin yang dapat dijalankan, masukkan chmod +x importtime_wrapper dari baris perintah.

  3. Terapkan skrip sebagai Lapisan Lambda.

  4. Buat fungsi menggunakan konsol Lambda.

    1. Buka konsol Lambda.

    2. Pilih Buat fungsi.

    3. Di bagian Informasi dasar, untuk Nama fungsi, masukkan wrapper-test-function.

    4. Untuk Waktu pengoperasian, pilih Python 3.8.

    5. Pilih Buat fungsi.

  5. Tambahkan lapisan ke fungsi Anda.

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

    2. Pilih Tambahkan lapisan.

    3. Di bagian Pilih lapisan, pilih Nama dan Versi dari lapisan kompatibel yang Anda buat sebelumnya.

    4. Pilih Tambahkan.

  6. Tambahkan kode dan variabel lingkungan ke fungsi Anda.

    1. Dalam fungsi editor kode, tempelkan kode fungsi berikut:

      import json def lambda_handler(event, context): # TODO implement return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda!') }
    2. Pilih Simpan.

    3. Pada Variabel lingkungan, pilih Edit.

    4. Pilih Tambahkan variabel lingkungan.

    5. Untuk Kunci, masukkan AWS_LAMBDA_EXEC_WRAPPER.

    6. Untuk Nilai, masukkan /opt/importtime_wrapper.

    7. Pilih Simpan.

  7. Untuk menjalankan fungsi, pilih Uji.

    Karena skrip pembungkus Anda memulai interpreter Python dengan opsi -X importtime, log menunjukkan waktu yang diperlukan untuk setiap impor. Sebagai contoh:

    ... 2020-06-30T18:48:46.780+01:00 import time: 213 | 213 | simplejson 2020-06-30T18:48:46.780+01:00 import time: 50 | 263 | simplejson.raw_json ...