

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

# Bekerja dengan variabel lingkungan Lambda
<a name="configuration-envvars"></a>

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 kunci API atau token otorisasi. Untuk informasi selengkapnya, lihat [Gunakan rahasia Secrets Manager dalam fungsi Lambda](with-secrets-manager.md).

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.

## Membuat variabel lingkungan Lambda
<a name="create-environment-variables"></a>

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

------
#### [ 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](configuration-versions.md) 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](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih fungsi.

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

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

1. Pilih **Tambahkan variabel lingkungan**.

1. 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](#configuration-envvars-runtime).
   + Ukuran total semua variabel lingkungan tidak lebih dari 4 KB.

1. 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**.

1. Gulir ke bawah ke bagian **VARIABEL LINGKUNGAN** dari editor kode. Variabel lingkungan yang ada tercantum di sini:  
![Variabel lingkungan bagian dari editor kode konsol Lambda](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/env-var.png)

1. Untuk membuat variabel lingkungan baru, pilih pilih tanda plus (![plus sign](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/add-plus.png)):  
![Tambahkan variabel lingkungan di editor kode konsol Lambda](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/create-env-var.png)

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](configuration-envvars-encryption.md).

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": "nodejs24.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 ke`update-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 Model](https://docs.aws.amazon.com//serverless-application-model/latest/developerguide/serverless-getting-started.html )untuk mengkonfigurasi variabel lingkungan untuk fungsi Anda. Perbarui properti [Lingkungan](https://docs.aws.amazon.com//serverless-application-model/latest/developerguide/sam-resource-function.html#sam-function-environment) dan [Variabel](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-environment.html#cfn-lambda-function-environment-variables) dalam `template.yaml` file Anda dan kemudian jalankan [sam deploy](https://docs.aws.amazon.com//serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-deploy.html).

**Example 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: nodejs24.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 operasi API berikut.
+ [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html)
+ [GetFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunctionConfiguration.html)
+ [CreateFunction](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html)

Untuk mempelajari lebih lanjut, lihat [dokumentasi AWS SDK](https://aws.amazon.com/developer/tools/) untuk bahasa pemrograman pilihan Anda.

------

## Contoh skenario untuk variabel lingkungan
<a name="configuration-envvars-example"></a>

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.](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/console-env.png)


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.

Misalnya, di lingkungan pengujian, Anda dapat menyetel variabel lingkungan dengan kunci `LOG_LEVEL` dan nilai yang menunjukkan tingkat log debug atau jejak. Dalam kode fungsi Lambda Anda, Anda kemudian dapat menggunakan variabel lingkungan ini untuk mengatur tingkat log.

Contoh kode berikut dalam Python dan Node.js menggambarkan bagaimana Anda dapat mencapai ini. Contoh-contoh ini mengasumsikan variabel lingkungan Anda memiliki nilai `DEBUG` dalam Python atau `debug` di Node.js.

------
#### [ Python ]

**Example Kode Python untuk mengatur level log**  

```
import os
import logging

# Initialize the logger
logger = logging.getLogger()

# Get the log level from the environment variable and default to INFO if not set
log_level = os.environ.get('LOG_LEVEL', 'INFO')

# Set the log level
logger.setLevel(log_level)

def lambda_handler(event, context):
    # Produce some example log outputs
    logger.debug('This is a log with detailed debug information - shown only in test environment')
    logger.info('This is a log with standard information - shown in production and test environments')
```

------
#### [ Node.js (ES module format) ]

**Example Kode Node.js untuk mengatur tingkat log**  
Contoh ini menggunakan pustaka `winston` logging. Gunakan npm untuk menambahkan pustaka ini ke paket penerapan fungsi Anda. Untuk informasi selengkapnya, lihat [Membuat paket penerapan.zip dengan dependensi](nodejs-package.md#nodejs-package-create-dependencies).  

```
import winston from 'winston';

// Initialize the logger using the log level from environment variables, defaulting to INFO if not set
const logger = winston.createLogger({
   level: process.env.LOG_LEVEL || 'info',
   format: winston.format.json(),
   transports: [new winston.transports.Console()]
});

export const handler = async (event) => {
   // Produce some example log outputs
   logger.debug('This is a log with detailed debug information - shown only in test environment');
   logger.info('This is a log with standard information - shown in production and test environment');
   
};
```

------

## Mengambil variabel lingkungan Lambda
<a name="retrieve-environment-variables"></a>

Untuk mengambil variabel lingkungan dalam kode fungsi Anda, gunakan metode standar untuk bahasa pemrograman Anda.

------
#### [ Node.js ]

```
let region = process.env.AWS_REGION
```

------
#### [ Python ]

```
import os
  region = os.environ['AWS_REGION']
```

**catatan**  
Pada beberapa kasus, Anda mungkin perlu menggunakan format berikut:  

```
region = os.environ.get('AWS_REGION')
```

------
#### [ Ruby ]

```
region = ENV["AWS_REGION"]
```

------
#### [ Java ]

```
String region = System.getenv("AWS_REGION");
```

------
#### [ Go ]

```
var region = os.Getenv("AWS_REGION")
```

------
#### [ C\# ]

```
string region = Environment.GetEnvironmentVariable("AWS_REGION");
```

------
#### [ PowerShell ]

```
$region = $env:AWS_REGION
```

------

Lambda menyimpan variabel lingkungan secara aman dengan mengenkripsinya saat istirahat. Anda dapat [mengonfigurasi Lambda untuk menggunakan kunci enkripsi yang berbeda](configuration-envvars-encryption.md), mengenkripsi nilai variabel lingkungan di sisi klien, atau mengatur variabel lingkungan CloudFormation dalam templat dengan. AWS Secrets Manager

## Variabel lingkungan runtime yang ditetapkan
<a name="configuration-envvars-runtime"></a>

[Runtime](lambda-runtimes.md) 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_ID` – [Header pelacakan X-Ray](services-xray.md). 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](runtimes-api.md#runtimes-api-next)
  + 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](https://docs.aws.amazon.com/sdkref/latest/guide/feature-region.html#feature-region-sdk-compat) dalam *AWS SDKs dan Panduan Referensi Alat*.
+ `AWS_EXECUTION_ENV`— [Pengidentifikasi runtime](lambda-runtimes.md), 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-demand`, `provisioned-concurrency``snap-start`, atau`lambda-managed-instances`. Untuk selengkapnya, lihat [Mengonfigurasi konkurensi yang disediakan](provisioned-concurrency.md),, atau. [Meningkatkan kinerja startup dengan Lambda SnapStart](snapstart.md) [Instans Terkelola Lambda](lambda-managed-instances.md)
+ `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](#configuration-envvars-runtime) 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](lambda-intro-execution-role.md) fungsi.
+ `AWS_LAMBDA_RUNTIME_API` – ([Runtime kustom](runtimes-custom.md)) Host dan port [API runtime](runtimes-api.md).
+ `LAMBDA_TASK_ROOT` – Jalur ke kode fungsi Lambda Anda.
+ `LAMBDA_RUNTIME_DIR` – Jalur ke pustaka runtime.
+ `AWS_LAMBDA_MAX_CONCURRENCY`— (Hanya Instans Terkelola Lambda) Jumlah maksimum pemanggilan bersamaan yang akan dikirim Lambda ke satu lingkungan eksekusi.
+ `AWS_LAMBDA_METADATA_API`— Alamat server [titik akhir metadata](configuration-metadata-endpoint.md) dalam format `{ipv4_address}:{port}` (misalnya,). `169.254.100.1:9001`
+ `AWS_LAMBDA_METADATA_TOKEN`— Token otentikasi unik untuk lingkungan eksekusi saat ini yang digunakan untuk mengautentikasi permintaan ke titik akhir [metadata](configuration-metadata-endpoint.md). Lambda menghasilkan token ini secara otomatis saat inisialisasi.

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](lambda-nodejs.md)) Jalur pustaka Node.js (`/opt/nodejs/node12/node_modules/:/opt/nodejs/node_modules:$LAMBDA_RUNTIME_DIR/node_modules`).
+ `NODE_OPTIONS`— ([Node.js](lambda-nodejs.md)) Untuk runtime Node.js, Anda dapat menggunakan `NODE_OPTIONS` untuk mengaktifkan kembali fitur eksperimental yang Lambda nonaktifkan secara default.
+ `PYTHONPATH`— ([Python](lambda-python.md)) Jalur perpustakaan Python (). `$LAMBDA_RUNTIME_DIR`
+ `GEM_PATH` – ([Ruby](lambda-ruby.md)) Jalur pustaka Ruby (`$LAMBDA_TASK_ROOT/vendor/bundle/ruby/3.3.0:/opt/ruby/gems/3.3.0`).
+ `AWS_XRAY_CONTEXT_MISSING` Untuk pelacakan X-Ray, Lambda mengatur ini menjadi `LOG_ERROR` untuk menghindari membuang 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`— ([.NET](lambda-csharp.md)) Atur variabel ini untuk mengaktifkan atau menonaktifkan optimasi runtime tertentu.NET. Nilai mencakup `always`, `never`, dan `provisioned-concurrency`. Untuk informasi selengkapnya, lihat [Mengkonfigurasi konkurensi yang disediakan untuk suatu fungsi](provisioned-concurrency.md).
+ `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.