View a markdown version of this page

Variabel lingkungan - AWS Lambda

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

Variabel lingkungan

Variabel lingkungan adalah pasangan nilai kunci yang tersedia untuk kode aplikasi Anda saat runtime. Gunakan variabel lingkungan untuk konfigurasi non-sensitif yang ingin Anda ubah tanpa memodifikasi kode, seperti flag fitur, tingkat log, dan pengidentifikasi sumber daya seperti nama host database. Untuk nilai sensitif seperti kunci API dan kredenal database, jangan menyimpannya dalam variabel lingkungan. Sebagai gantinya, gunakan Secrets Manager atau AWS Systems Manager Parameter Store dan ambil nilai saat runtime.

Variabel lingkungan diatur saat Anda membuat revisi dan tidak dapat diubah setelah pembuatan. Untuk mengubah variabel lingkungan, buat revisi baru. Dalam revisi baru, tentukan setiap variabel lingkungan dan setiap serviceConfig pengaturan yang ingin Anda pertahankan, tidak hanya nilai yang berubah. Pengaturan yang Anda hilangkan mengambil nilai defaultnya, dan variabel lingkungan yang Anda hilangkan tidak disetel.

Lambda menetapkan variabel lingkungan berikut khusus untuk Fungsi Web:

  • AWS_LAMBDA_HTTP_ENDPOINT— Host dan port yang harus didengarkan server HTTP Anda, dalam host:port format. Lambda menetapkan variabel ini dan merutekan permintaan ke alamat itu. Baca di kode aplikasi Anda dan ikat persis host dan port itu. Anda tidak dapat mengatur variabel ini dalam variabel lingkungan revisi. Selalu mengikat ke alamat dalam variabel ini, bukan localhost atau port hardcode. Runtime menunggu server Anda menerima koneksi di alamat ini, dan inisialisasi gagal jika tidak pernah terjadi. Gunakan alamat fallback hanya untuk proses lokal. Dalam Fungsi Web, Lambda selalu menetapkan variabel ini.

Fungsi Web juga menerima variabel lingkungan runtime Lambda lainnya, sepertiAWS_LAMBDA_FUNCTION_MEMORY_SIZE,, dan. AWS_LAMBDA_METADATA_API AWS_LAMBDA_METADATA_TOKEN Untuk daftar umum, lihatVariabel lingkungan runtime yang ditetapkan. Jika kode atau pustaka membaca variabel dari daftar tersebut, konfirmasikan bahwa Lambda menyetelnya dalam Fungsi Web sebelum Anda mengandalkannya. Fungsi Web tidak menerima setiap variabel dalam daftar itu.

Nama variabel lingkungan berikut dicadangkan untuk Lambda Web Functions dan tidak dapat diatur. Jika Anda menentukan satu, Lambda menolak permintaan untuk membuat Fungsi Web atau revisi:

  • AWS_ACCESS_KEY, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SECRET_KEY, AWS_SECURITY_TOKEN, dan AWS_SESSION_TOKEN

  • AWS_DEFAULT_REGION dan AWS_REGION

  • AWS_LAMBDA_HTTP_ENDPOINT, AWS_LAMBDA_RUNTIME_API, AWS_LAMBDA_INITIALIZATION_TYPE, dan AWS_LAMBDA_FUNCTION_MEMORY_SIZE

  • AWS_LAMBDA_METADATA_API dan AWS_LAMBDA_METADATA_TOKEN

Beberapa kerangka kerja membaca variabel lingkungan mereka sendiri untuk alamat mendengarkan sebagai gantinya. Misalnya, mode Next.js mandiri membaca HOSTNAME danPORT. Untuk kerangka kerja seperti itu, gunakan file index.js entri yang menetapkan variabel-variabel tersebut AWS_LAMBDA_HTTP_ENDPOINT sebelum memulai server.

Secara default, runtime dimuat index.js di root paket deployment Anda sebagai file entri aplikasi Anda. Runtime tidak membaca titik masuk daripackage.json. Jika file entri Anda memiliki nama atau jalur yang berbeda (misalnya,dist/index.js), atur variabel AWS_LAMBDA_NODEJS_ENTRYPOINT lingkungan ke jalurnya, relatif terhadap root paket Anda.

Contoh berikut menunjukkan cara membaca variabel AWS_LAMBDA_HTTP_ENDPOINT lingkungan dalam Node.js aplikasi:

// Lambda provides the address to bind in AWS_LAMBDA_HTTP_ENDPOINT ("host:port"). // The fallback applies only when running locally. const [host, port] = (process.env.AWS_LAMBDA_HTTP_ENDPOINT || 'localhost:3000').split(':'); app.listen(port, host, () => { console.log(`Server listening on ${host}:${port}`); });

Untuk mengatur variabel lingkungan Anda sendiri, tambahkan environmentVariables peta ke serviceConfig objek saat Anda membuat revisi, seperti pada contoh berikut. Untuk perintah lengkapnya, lihatMembuat revisi.

{ "executionRoleArn": "arn:aws:iam::111122223333:role/my-web-function-role", "environmentVariables": { "DATABASE_URL": "my-database-endpoint", "LOG_LEVEL": "info", "FEATURE_FLAG_NEW_UI": "true" } }

Jika Anda menentukan kunci yang dikelola pelanggan, Lambda mengenkripsi variabel lingkungan saat istirahat dengan kunci itu. Lihat informasi yang lebih lengkap di Enkripsi saat istirahat untuk Fungsi Web.