Gunakan variabel lingkungan Lambda untuk mengonfigurasi nilai dalam kode - AWS Lambda

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

Gunakan variabel lingkungan Lambda untuk mengonfigurasi nilai dalam kode

Anda dapat menggunakan variabel lingkungan untuk menyesuaikan perilaku fungsi Anda tanpa memperbarui kode. Variabel lingkungan adalah sepasang string yang disimpan dalam konfigurasi spesifik versi fungsi. Runtime Lambda membuat variabel lingkungan tersedia bagi kode Anda dan mengatur variabel lingkungan tambahan yang berisi informasi tentang fungsi dan permintaan invokasi.

catatan

Untuk meningkatkan keamanan, sebaiknya Anda menggunakan AWS Secrets Manager variabel lingkungan untuk menyimpan kredensi database dan informasi sensitif lainnya seperti API kunci atau token otorisasi. Untuk informasi selengkapnya, lihat Membuat dan mengelola rahasia dengan AWS Secrets Manager.

Variabel lingkungan tidak dievaluasi sebelum pemanggilan fungsi. Nilai apa pun yang Anda tentukan dianggap sebagai string harafiah dan tidak diperluas. Lakukan evaluasi variabel dalam kode fungsi Anda.

Anda dapat mengonfigurasi variabel lingkungan di Lambda menggunakan konsol Lambda, (), AWS Command Line Interface (AWS CLI), AWS Serverless Application Model atau menggunakan.AWS SAM AWS SDK

Console

Anda menentukan variabel lingkungan pada versi fungsi yang belum dipublikasikan. Saat Anda mempublikasikan versi, variabel lingkungan dikunci untuk versi tersebut bersama dengan pengaturan konfigurasi khusus versi lainnya.

Anda membuat variabel lingkungan untuk fungsi Anda dengan mendefinisikan kunci dan nilai. Fungsi Anda menggunakan nama kunci untuk mengambil nilai variabel lingkungan.

Untuk mengatur variabel lingkungan di konsol Lambda
  1. Buka Halaman fungsi di konsol Lambda.

  2. Pilih fungsi.

  3. PilihKonfigurasi, lalu pilih Variabel lingkungan.

  4. Pada Variabel lingkungan, pilih Edit.

  5. Pilih Tambahkan variabel lingkungan.

  6. Masukkan kunci dan nilai.

    Persyaratan
    • Kunci dimulai dengan huruf dan setidaknya dua karakter.

    • Kunci hanya berisi huruf, angka, dan karakter garis bawah (_).

    • Kunci tidak dicadangkan oleh Lambda.

    • Ukuran total semua variabel lingkungan tidak lebih dari 4 KB.

  7. Pilih Simpan.

Untuk menghasilkan daftar variabel lingkungan di editor kode konsol

Anda dapat membuat daftar variabel lingkungan di editor kode Lambda. Ini adalah cara cepat untuk mereferensikan variabel lingkungan Anda saat Anda membuat kode.

  1. Pilih tab Kode.

  2. Pilih tab Variabel Lingkungan.

  3. Pilih Alat, Tampilkan Variabel Lingkungan.

Variabel lingkungan tetap dienkripsi saat terdaftar di editor kode konsol. Jika Anda mengaktifkan pembantu enkripsi untuk enkripsi dalam perjalanan, maka pengaturan tersebut tetap tidak berubah. Untuk informasi selengkapnya, lihat Mengamankan variabel lingkungan Lambda.

Daftar variabel lingkungan hanya-baca dan hanya tersedia di konsol Lambda. File ini tidak disertakan saat Anda mengunduh arsip file.zip fungsi, dan Anda tidak dapat menambahkan variabel lingkungan dengan mengunggah file ini.

AWS CLI

Contoh berikut menetapkan dua variabel lingkungan pada fungsi yang diberi nama my-function.

aws lambda update-function-configuration \ --function-name my-function \ --environment "Variables={BUCKET=amzn-s3-demo-bucket,KEY=file.txt}"

Ketika Anda menerapkan variabel lingkungan dengan perintah update-function-configuration, seluruh isi dari struktur Variables digantikan. Untuk mempertahankan variabel lingkungan yang ada saat Anda menambahkan yang baru, sertakan semua nilai yang ada dalam permintaan Anda.

Untuk mendapatkan konfigurasi saat ini, gunakan perintah get-function-configuration.

aws lambda get-function-configuration \ --function-name my-function

Anda akan melihat output berikut:

{ "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Runtime": "nodejs20.x", "Role": "arn:aws:iam::111122223333:role/lambda-role", "Environment": { "Variables": { "BUCKET": "amzn-s3-demo-bucket", "KEY": "file.txt" } }, "RevisionId": "0894d3c1-2a3d-4d48-bf7f-abade99f3c15", ... }

Anda dapat meneruskan ID revisi dari output get-function-configuration sebagai parameter keupdate-function-configuration. Ini memastikan bahwa nilai tidak berubah antara saat Anda membaca konfigurasi dan saat Anda memperbaruinya.

Untuk mengonfigurasi kunci enkripsi fungsi, atur opsi KMSKeyARN.

aws lambda update-function-configuration \ --function-name my-function \ --kms-key-arn arn:aws:kms:us-east-2:111122223333:key/055efbb4-xmpl-4336-ba9c-538c7d31f599
AWS SAM

Anda dapat menggunakan AWS Serverless Application Modeluntuk mengkonfigurasi variabel lingkungan untuk fungsi Anda. Perbarui properti Lingkungan dan Variabel dalam template.yaml file Anda dan kemudian jalankan sam deploy.

contoh template.yaml
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: An AWS Serverless Application Model template describing your function. Resources: my-function: Type: AWS::Serverless::Function Properties: CodeUri: . Description: '' MemorySize: 128 Timeout: 120 Handler: index.handler Runtime: nodejs18.x Architectures: - x86_64 EphemeralStorage: Size: 10240 Environment: Variables: BUCKET: amzn-s3-demo-bucket KEY: file.txt # Other function properties...
AWS SDKs

Untuk mengelola variabel lingkungan menggunakan AWS SDK, gunakan API operasi berikut.

Untuk mempelajari lebih lanjut, lihat AWS SDKdokumentasi untuk bahasa pemrograman pilihan Anda.

Variabel lingkungan runtime yang ditetapkan

Runtime Lambda menetapkan beberapa variabel lingkungan selama inisialisasi. Sebagian besar variabel lingkungan memberikan informasi tentang fungsi atau runtime. Kunci untuk variabel lingkungan ini dicadangkan dan tidak dapat diatur dalam konfigurasi fungsi Anda.

Variabel lingkungan yang tersimpan
  • _HANDLER – Lokasi handler dikonfigurasi pada fungsi.

  • _X_AMZN_TRACE_IDHeader pelacakan X-Ray. Variabel lingkungan ini berubah dengan setiap pemanggilan.

    • Variabel lingkungan ini tidak ditentukan untuk runtime khusus OS (keluarga runtime). provided Anda dapat mengatur _X_AMZN_TRACE_ID runtime kustom menggunakan header Lambda-Runtime-Trace-Id respons dari file. Invokasi berikutnya

    • Untuk Java runtime versi 17 dan yang lebih baru, variabel lingkungan ini tidak digunakan. Sebaliknya, Lambda menyimpan informasi penelusuran di properti sistem. com.amazonaws.xray.traceHeader

  • AWS_DEFAULT_REGION— Default Wilayah AWS di mana fungsi Lambda dijalankan.

  • AWS_REGION— Wilayah AWS Tempat fungsi Lambda dijalankan. Jika didefinisikan, nilai ini mengesampingkan. AWS_DEFAULT_REGION

    • Untuk informasi selengkapnya tentang penggunaan variabel Wilayah AWS lingkungan dengan AWS SDKs, lihat AWS Wilayah dalam AWS SDKsdan Panduan Referensi Alat.

  • AWS_EXECUTION_ENVPengidentifikasi runtime, diawali oleh AWS_Lambda_ (misalnya,). AWS_Lambda_java8 Variabel lingkungan ini tidak ditentukan untuk runtime khusus OS (keluarga runtime). provided

  • AWS_LAMBDA_FUNCTION_NAME – Nama fungsi.

  • AWS_LAMBDA_FUNCTION_MEMORY_SIZE – Jumlah memori yang tersedia untuk fungsi dalam MB.

  • AWS_LAMBDA_FUNCTION_VERSION – Versi fungsi yang sedang dijalankan.

  • AWS_LAMBDA_INITIALIZATION_TYPE— Jenis inisialisasi fungsi, yaitu, on-demandprovisioned-concurrency, atausnap-start. Untuk selengkapnya, lihat Mengonfigurasi konkurensi yang disediakan atau. Meningkatkan kinerja startup dengan Lambda SnapStart

  • AWS_LAMBDA_LOG_GROUP_NAME, AWS_LAMBDA_LOG_STREAM_NAME — Nama grup Amazon CloudWatch Logs dan streaming untuk fungsi tersebut. Variabel AWS_LAMBDA_LOG_GROUP_NAME dan AWS_LAMBDA_LOG_STREAM_NAME lingkungan tidak tersedia dalam fungsi Lambda SnapStart .

  • AWS_ACCESS_KEY,AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN — Kunci akses yang diperoleh dari peran eksekusi fungsi.

  • AWS_LAMBDA_RUNTIME_API— (Custom runtime) Host dan port runtime API.

  • LAMBDA_TASK_ROOT – Jalur ke kode fungsi Lambda Anda.

  • LAMBDA_RUNTIME_DIR – Jalur ke pustaka runtime.

Variabel lingkungan tambahan berikut ini tidak dicadangkan dan dapat diperluas dalam konfigurasi fungsi Anda.

Variabel lingkungan yang tidak dicadangkan
  • LANG – Lokal runtime (en_US.UTF-8).

  • PATH – Jalur eksekusi (/usr/local/bin:/usr/bin/:/bin:/opt/bin).

  • LD_LIBRARY_PATH – Jalur pustaka sistem (/var/lang/lib:/lib64:/usr/lib64:$LAMBDA_RUNTIME_DIR:$LAMBDA_RUNTIME_DIR/lib:$LAMBDA_TASK_ROOT:$LAMBDA_TASK_ROOT/lib:/opt/lib).

  • NODE_PATH – (Node.js) Jalur pustaka Node.js (/opt/nodejs/node12/node_modules/:/opt/nodejs/node_modules:$LAMBDA_RUNTIME_DIR/node_modules).

  • PYTHONPATH – (Python 2.7, 3.6, 3.8) Jalur pustaka Python ($LAMBDA_RUNTIME_DIR).

  • GEM_PATH – (Ruby) Jalur pustaka Ruby ($LAMBDA_TASK_ROOT/vendor/bundle/ruby/2.5.0:/opt/ruby/gems/2.5.0).

  • AWS_XRAY_CONTEXT_MISSING— Untuk penelusuran X-Ray, Lambda mengatur ini LOG_ERROR untuk menghindari kesalahan runtime dari X-Ray. SDK

  • AWS_XRAY_DAEMON_ADDRESS – Untuk pelacakan X-Ray, alamat IP dan port daemon X-Ray.

  • AWS_LAMBDA_DOTNET_PREJIT- Untuk. NET6 dan. NET7 runtime, atur variabel ini untuk mengaktifkan atau menonaktifkan. NETpengoptimalan runtime tertentu. Nilai mencakup always, never, dan provisioned-concurrency. Untuk informasi selengkapnya, lihat Mengkonfigurasi konkurensi yang disediakan untuk suatu fungsi.

  • TZ – Zona waktu lingkungan (:UTC). Lingkungan eksekusi menggunakan NTP untuk menyinkronkan jam sistem.

Nilai sampel yang ditampilkan mencerminkan runtime terbaru. Adanya variabel tertentu atau nilainya dapat bervariasi pada runtime awal.

Contoh skenario untuk variabel lingkungan

Anda dapat menggunakan variabel lingkungan untuk menyesuaikan perilaku fungsi di lingkungan pengujian Anda dan lingkungan produksi. Misalnya, Anda dapat membuat dua fungsi dengan kode yang sama, tetapi konfigurasi yang berbeda. Satu fungsi terhubung ke basis data uji, dan fungsi lainnya terhubung ke basis data produksi. Dalam situasi ini, Anda menggunakan variabel lingkungan untuk meneruskan nama host dan detail koneksi lainnya untuk database ke fungsi.

Contoh berikut menunjukkan cara menentukan host basis data dan nama basis data sebagai variabel lingkungan.

Variabel lingkungan di konsol Lambda.

Jika Anda ingin lingkungan pengujian Anda menghasilkan lebih banyak informasi debug daripada lingkungan produksi, Anda dapat mengatur variabel lingkungan untuk mengonfigurasi lingkungan pengujian Anda untuk menggunakan lebih banyak log verbose atau pelacakan yang lebih terperinci.