

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

1. Untuk membuat variabel lingkungan baru, pilih pilih tanda plus (![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/add-plus.png)):  
![\[\]](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.

![\[\]](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\$1 ]

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

# Mengamankan variabel lingkungan Lambda
<a name="configuration-envvars-encryption"></a>

Untuk mengamankan variabel lingkungan Anda, Anda dapat menggunakan enkripsi sisi server untuk melindungi data Anda saat istirahat dan enkripsi sisi klien untuk melindungi data Anda dalam perjalanan.

**catatan**  
Untuk meningkatkan keamanan database, kami sarankan Anda menggunakan AWS Secrets Manager bukan variabel lingkungan untuk menyimpan kredensi database. Untuk informasi selengkapnya, lihat [Gunakan rahasia Secrets Manager dalam fungsi Lambda](with-secrets-manager.md).

**Keamanan saat istirahat**  
Lambda selalu menyediakan enkripsi sisi server saat istirahat dengan file. AWS KMS key Secara default, Lambda menggunakan file. Kunci yang dikelola AWS Jika perilaku default ini sesuai dengan alur kerja Anda, Anda tidak perlu menyiapkan hal lain. Lambda membuat Kunci yang dikelola AWS di akun Anda dan mengelola izin untuk Anda. AWS tidak membebankan biaya untuk menggunakan kunci ini.

Jika mau, Anda dapat memberikan kunci yang dikelola AWS KMS pelanggan sebagai gantinya. Anda dapat melakukan ini untuk memiliki kontrol atas rotasi kunci KMS atau untuk memenuhi persyaratan organisasi Anda untuk mengelola kunci KMS. Saat Anda menggunakan kunci yang dikelola pelanggan, hanya pengguna di akun Anda dengan akses ke kunci KMS yang dapat melihat atau mengelola variabel lingkungan pada fungsi tersebut.

Kunci yang dikelola pelanggan dikenakan AWS KMS biaya standar. Untuk informasi selengkapnya, lihat [harga AWS Key Management Service](https://aws.amazon.com/kms/pricing/).

**Keamanan dalam perjalanan**  
Untuk keamanan tambahan, Anda dapat mengaktifkan helper untuk enkripsi dalam perjalanan, yang memastikan bahwa variabel lingkungan Anda dienkripsi sisi klien untuk perlindungan dalam perjalanan.

**Untuk mengonfigurasi enkripsi untuk variabel lingkungan Anda**

1. Gunakan AWS Key Management Service (AWS KMS) untuk membuat kunci terkelola pelanggan apa pun yang digunakan Lambda untuk enkripsi sisi server dan sisi klien. Untuk informasi selengkapnya, lihat [Membuat kunci](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) di *Panduan AWS Key Management Service Pengembang*.

1. Menggunakan konsol Lambda, navigasikan ke halaman **Edit variabel lingkungan**.

   1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

   1. Pilih fungsi.

   1. Pilih **Konfigurasi**, lalu pilih **variabel Lingkungan** dari bilah navigasi kiri.

   1. Di bagian **Variabel lingkungan**, pilih **Edit**.

   1. Perluas **Konfigurasi enkripsi**.

1. (Opsional) Aktifkan pembantu enkripsi konsol untuk menggunakan enkripsi sisi klien untuk melindungi data Anda saat transit.

   1. Di bawah **Enkripsi dalam perjalanan**, pilih **Aktifkan pembantu untuk enkripsi saat transit**.

   1. Untuk setiap variabel lingkungan yang ingin Anda aktifkan pembantu enkripsi konsol, pilih **Enkripsi** di sebelah variabel lingkungan.

   1.  Di bawah AWS KMS key untuk mengenkripsi saat transit, pilih kunci terkelola pelanggan yang Anda buat di awal prosedur ini.

   1. Pilih **Kebijakan peran eksekusi** dan salin kebijakan. Kebijakan ini memberikan izin untuk peran eksekusi fungsi Anda untuk mendekripsi variabel lingkungan.

      Simpan kebijakan ini untuk digunakan pada langkah terakhir prosedur ini.

   1. Tambahkan kode ke fungsi Anda yang mendekripsi variabel lingkungan. Untuk melihat contoh, pilih **Dekripsi cuplikan rahasia**.

1. (Opsional) Tentukan kunci terkelola pelanggan Anda untuk enkripsi saat istirahat.

   1. Pilih **Gunakan kunci utama pelanggan**.

   1. Pilih kunci yang dikelola pelanggan yang Anda buat di awal prosedur ini.

1. Pilih **Simpan**.

1. Menyiapkan izin.

   Jika Anda menggunakan kunci yang dikelola pelanggan dengan enkripsi sisi server, berikan izin kepada pengguna atau peran apa pun yang Anda inginkan untuk dapat melihat atau mengelola variabel lingkungan pada fungsi tersebut. Untuk informasi selengkapnya, lihat [Mengelola izin ke kunci KMS enkripsi sisi server Anda](#managing-permissions-to-your-server-side-encryption-key).

   Jika Anda mengaktifkan enkripsi sisi klien untuk keamanan dalam perjalanan, fungsi Anda memerlukan izin untuk memanggil operasi API. `kms:Decrypt` Tambahkan kebijakan yang Anda simpan sebelumnya dalam prosedur ini ke [peran eksekusi](lambda-intro-execution-role.md) fungsi.

## Mengelola izin ke kunci KMS enkripsi sisi server Anda
<a name="managing-permissions-to-your-server-side-encryption-key"></a>

Tidak ada AWS KMS izin yang diperlukan untuk pengguna Anda atau peran eksekusi fungsi untuk menggunakan kunci enkripsi default. Untuk menggunakan kunci yang dikelola pelanggan, Anda memerlukan izin untuk menggunakan kunci tersebut. Lambda menggunakan izin Anda untuk membuat izin pada kunci. Ini memungkinkan Lambda menggunakannya untuk enkripsi.
+ `kms:ListAliases` – Untuk melihat kunci di konsol Lambda.
+ `kms:CreateGrant`, `kms:Encrypt` — Untuk mengonfigurasi kunci yang dikelola pelanggan pada suatu fungsi.
+ `kms:Decrypt`— Untuk melihat dan mengelola variabel lingkungan yang dienkripsi dengan kunci yang dikelola pelanggan.

Anda bisa mendapatkan izin ini dari Akun AWS atau dari kebijakan izin berbasis sumber daya kunci. `ListAliases`disediakan oleh [kebijakan terkelola untuk Lambda](access-control-identity-based.md). Kebijakan kunci memberikan izin yang tersisa kepada pengguna di grup **Pengguna utama**.

Pengguna tanpa `Decrypt` izin masih dapat mengelola fungsi, tetapi mereka tidak dapat melihat variabel lingkungan atau mengelolanya di konsol Lambda. Untuk mencegah pengguna melihat variabel lingkungan, tambahkan pernyataan ke izin pengguna yang menolak akses ke kunci default, kunci yang dikelola pelanggan, atau semua kunci.

**Example Kebijakan IAM – Menolak akses dengan ARN kunci**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-2:111122223333:key/3be10e2d-xmpl-4be4-bc9d-0405a71945cc"
        }
    ]
}
```

Untuk detail tentang mengelola izin utama, lihat [Kebijakan utama AWS KMS di](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) *Panduan AWS Key Management Service Pengembang*.