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 sebagai lapisan Lambda

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
  2. Dalam bin direktori, paste kode berikut ke dalam file baru bernamaimporttime_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[@]}"
  3. Berikan izin yang dapat dieksekusi skrip:

    chmod +x importtime_wrapper
  4. Buat file.zip untuk layer:

    cd .. zip -r ../python-wrapper-layer.zip .
  5. Konfirmasikan bahwa file.zip Anda memiliki struktur direktori berikut:

    python-wrapper-layer.zip
    └ bin
        └ importtime_wrapper
  6. Buat layer menggunakan paket.zip.

  7. Buat fungsi menggunakan konsol Lambda.

    1. Buka konsol Lambda.

    2. Pilih Buat fungsi.

    3. Masukkan nama Fungsi.

    4. Untuk Runtime, pilih runtime Python terbaru yang didukung.

    5. Pilih Buat fungsi.

  8. Tambahkan lapisan ke fungsi Anda.

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

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

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

    4. Untuk Versi, pilih 1.

    5. Pilih Tambahkan.

  9. Tambahkan variabel lingkungan pembungkus.

    1. Pilih tab Konfigurasi, lalu pilih variabel Lingkungan.

    2. Pada Variabel lingkungan, pilih Edit.

    3. Pilih Tambahkan variabel lingkungan.

    4. Untuk Kunci, masukkan AWS_LAMBDA_EXEC_WRAPPER.

    5. Untuk Nilai, masukkan /opt/bin/importtime_wrapper (/opt/+ struktur folder lapisan.zip Anda).

    6. Pilih Simpan.

  10. Uji skrip pembungkus.

    1. Pilih tab Uji.

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

    3. 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