

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

# Mengenkripsi paket deployment .zip Lambda
<a name="encrypt-zip-package"></a>

Lambda selalu menyediakan enkripsi sisi server saat istirahat untuk paket penerapan .zip dan detail konfigurasi fungsi dengan file. AWS KMS key Secara default, Lambda menggunakan file. [Kunci milik AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) Jika perilaku default ini sesuai dengan alur kerja Anda, Anda tidak perlu menyiapkan hal lain. 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 kode atau konfigurasi fungsi.

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

## Buat kunci terkelola pelanggan
<a name="create-key"></a>

 Anda dapat membuat kunci terkelola pelanggan simetris dengan menggunakan Konsol Manajemen AWS, atau. AWS KMS APIs

**Untuk membuat kunci terkelola pelanggan simetris**

*Ikuti langkah-langkah untuk [Membuat enkripsi simetris Membuat kunci KMS simetris di Panduan Pengembang](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk).AWS Key Management Service *

### Izin
<a name="enable-zip-permissions"></a>

**Kebijakan utama**

[Kebijakan utama](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) mengontrol akses ke kunci yang dikelola pelanggan Anda. Setiap kunci yang dikelola pelanggan harus memiliki persis satu kebijakan utama, yang berisi pernyataan yang menentukan siapa yang dapat menggunakan kunci dan bagaimana mereka dapat menggunakannya. Untuk informasi selengkapnya, lihat [Cara mengubah kebijakan utama](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-how-to) di *Panduan AWS Key Management Service Pengembang*.

[Saat Anda menggunakan kunci yang dikelola pelanggan untuk mengenkripsi paket penyebaran .zip, Lambda tidak menambahkan hibah ke kunci tersebut.](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) Sebagai gantinya, kebijakan AWS KMS utama Anda harus mengizinkan Lambda memanggil operasi AWS KMS API berikut atas nama Anda:
+ [km: GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)
+ [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)

Contoh kebijakan kunci berikut memungkinkan semua fungsi Lambda di akun 111122223333 memanggil operasi yang diperlukan AWS KMS untuk kunci terkelola pelanggan yang ditentukan:

**Example AWS KMS kebijakan kunci**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id",
            "Condition": {
                "StringLike": {
                "kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:*"
                }
            }
        }
    ]
}
```

Untuk informasi selengkapnya tentang [akses kunci pemecahan](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html#example-no-iam) masalah, lihat Panduan *AWS Key Management Service Pengembang*.

**Izin principal**

Saat Anda menggunakan kunci yang dikelola pelanggan untuk mengenkripsi paket penyebaran .zip, hanya [prinsipal dengan akses ke kunci tersebut yang dapat mengakses paket](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html) penyebaran .zip. Misalnya, prinsipal yang tidak memiliki akses ke kunci yang dikelola pelanggan tidak dapat mengunduh paket.zip menggunakan URL S3 yang telah ditetapkan sebelumnya yang disertakan dalam respons. [GetFunction](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunction.html) `AccessDeniedException`An dikembalikan di `Code` bagian respons.

**Example AWS KMS AccessDeniedException**  

```
{
    "Code": {
        "RepositoryType": "S3",
        "Error": {
            "ErrorCode": "AccessDeniedException",
            "Message": "KMS access is denied. Check your KMS permissions. KMS Exception: AccessDeniedException KMS Message: User: arn:aws:sts::111122223333:assumed-role/LambdaTestRole/session is not authorized to perform: kms:Decrypt on resource: arn:aws:kms:us-east-1:111122223333:key/key-id with an explicit deny in a resource-based policy"
        },
        "SourceKMSKeyArn": "arn:aws:kms:us-east-1:111122223333:key/key-id"
    },
	...
```

Untuk informasi selengkapnya tentang izin AWS KMS kunci, lihat [Otentikasi dan kontrol akses](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html) untuk. AWS KMS

## Menggunakan kunci terkelola pelanggan untuk paket penerapan.zip
<a name="enable-zip-custom-encryption"></a>

Gunakan parameter API berikut untuk mengonfigurasi kunci terkelola pelanggan untuk paket penerapan.zip:
+ [Sumber KMSKey Arn](https://docs.aws.amazon.com/lambda/latest/api/API_FunctionCode.html#lambda-Type-FunctionCode-SourceKMSKeyArn): Mengenkripsi paket penyebaran sumber.zip (file yang Anda unggah).
+ [KMSKeyArn](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html#lambda-CreateFunction-request-KMSKeyArn)[: Mengenkripsi variabel [lingkungan dan](configuration-envvars-encryption.md) snapshot Lambda. SnapStart](snapstart.md)

Kapan `SourceKMSKeyArn` dan `KMSKeyArn` keduanya ditentukan, Lambda menggunakan `KMSKeyArn` kunci untuk mengenkripsi versi paket yang tidak di-zip yang digunakan Lambda untuk menjalankan fungsi. Kapan `SourceKMSKeyArn` `KMSKeyArn` ditentukan tetapi tidak, Lambda menggunakan [Kunci yang dikelola AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)untuk mengenkripsi versi paket yang tidak di-zip.

------
#### [ Lambda console ]

**Untuk menambahkan enkripsi kunci terkelola pelanggan saat Anda membuat fungsi**

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

1. Pilih **Buat fungsi**.

1. Pilih **Author dari awal** atau **gambar Container**. 

1. Di bagian **Informasi dasar**, lakukan hal berikut:

   1. Untuk **Nama fungsi**, masukkan nama fungsi.

   1. Untuk **Runtime**, pilih versi bahasa yang akan digunakan untuk fungsi Anda.

1. Perluas **Pengaturan lanjutan**, lalu pilih **Aktifkan enkripsi dengan kunci yang dikelola AWS KMS pelanggan**.

1. Memilih kunci yang dikelola pelanggan.

1. Pilih **Buat fungsi**.

Untuk menghapus enkripsi kunci terkelola pelanggan, atau menggunakan kunci yang berbeda, Anda harus mengunggah paket deployment .zip lagi.

**Untuk menambahkan enkripsi kunci terkelola pelanggan ke fungsi yang ada**

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

1. Pilih nama sebuah fungsi.

1. Di panel **Sumber kode**, pilih **Unggah dari**.

1. Pilih **file.zip** atau lokasi **Amazon S3**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/upload-zip.png)

1. Unggah file atau masukkan lokasi Amazon S3.

1. Pilih **Aktifkan enkripsi dengan kunci yang dikelola AWS KMS pelanggan**.

1. Memilih kunci yang dikelola pelanggan.

1. Pilih **Simpan**.

------
#### [ AWS CLI ]

**Untuk menambahkan enkripsi kunci terkelola pelanggan saat Anda membuat fungsi**

Dalam contoh [create-function](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html) berikut:
+ `--code`: Menentukan jalur lokal ke paket penyebaran .zip (`ZipFile`) dan kunci yang dikelola pelanggan untuk mengenkripsinya (). `SourceKMSKeyArn`
+ `--kms-key-arn`: Menentukan kunci yang dikelola pelanggan untuk mengenkripsi variabel lingkungan dan versi paket penyebaran yang tidak di-zip.

```
aws lambda create-function \
  --function-name myFunction \
  --runtime nodejs24.x \
  --handler index.handler \
  --role arn:aws:iam::111122223333:role/service-role/my-lambda-role \
  --code ZipFile=fileb://myFunction.zip,SourceKMSKeyArn=arn:aws:kms:us-east-1:111122223333:key/key-id \
  --kms-key-arn arn:aws:kms:us-east-1:111122223333:key/key2-id
```

Dalam contoh [create-function](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html) berikut:
+ `--code`: Menentukan lokasi file.zip dalam bucket Amazon S3 `S3Bucket` (`S3Key`,`S3ObjectVersion`,) dan kunci yang dikelola pelanggan untuk mengenkripsinya (). `SourceKMSKeyArn`
+ `--kms-key-arn`: Menentukan kunci yang dikelola pelanggan untuk mengenkripsi variabel lingkungan dan versi paket penyebaran yang tidak di-zip.

```
aws lambda create-function \
  --function-name myFunction \
  --runtime nodejs24.x --handler index.handler \
  --role arn:aws:iam::111122223333:role/service-role/my-lambda-role \
  --code S3Bucket=amzn-s3-demo-bucket,S3Key=myFileName.zip,S3ObjectVersion=myObjectVersion,SourceKMSKeyArn=arn:aws:kms:us-east-1:111122223333:key/key-id \
  --kms-key-arn arn:aws:kms:us-east-1:111122223333:key/key2-id
```

**Untuk menambahkan enkripsi kunci terkelola pelanggan ke fungsi yang ada**

Dalam [update-function-code](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-code.html)contoh berikut:
+ `--zip-file`: Menentukan jalur lokal ke paket.zip deployment.
+ `--source-kms-key-arn`: Menentukan kunci yang dikelola pelanggan untuk mengenkripsi versi zip dari paket penyebaran. Lambda menggunakan kunci yang AWS dimiliki untuk mengenkripsi paket unzip untuk pemanggilan fungsi. Jika Anda ingin menggunakan kunci yang dikelola pelanggan untuk mengenkripsi versi paket yang tidak di-zip, jalankan [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html)perintah dengan opsi. `--kms-key-arn`

```
aws lambda update-function-code \
  --function-name myFunction \
  --zip-file fileb://myFunction.zip \
  --source-kms-key-arn arn:aws:kms:us-east-1:111122223333:key/key-id
```

Dalam [update-function-code](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-code.html)contoh berikut:
+ `--s3-bucket`: Menentukan lokasi file.zip di bucket Amazon S3.
+ `--s3-key`: Menentukan kunci Amazon S3 dari paket penyebaran.
+ `--s3-object-version`: Untuk objek berversi, versi objek paket penyebaran yang akan digunakan.
+ `--source-kms-key-arn`: Menentukan kunci yang dikelola pelanggan untuk mengenkripsi versi zip dari paket penyebaran. Lambda menggunakan kunci yang AWS dimiliki untuk mengenkripsi paket unzip untuk pemanggilan fungsi. Jika Anda ingin menggunakan kunci yang dikelola pelanggan untuk mengenkripsi versi paket yang tidak di-zip, jalankan [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html)perintah dengan opsi. `--kms-key-arn`

```
aws lambda update-function-code \
  --function-name myFunction \
  --s3-bucket amzn-s3-demo-bucket \
  --s3-key myFileName.zip \
  --s3-object-version myObject Version
  --source-kms-key-arn arn:aws:kms:us-east-1:111122223333:key/key-id
```

**Untuk menghapus enkripsi kunci terkelola pelanggan dari fungsi yang ada**

Dalam [update-function-code](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-code.html)contoh berikut, `--zip-file` menentukan path lokal ke paket deployment .zip. Saat Anda menjalankan perintah ini tanpa `--source-kms-key-arn` opsi, Lambda menggunakan kunci yang AWS dimiliki untuk mengenkripsi versi zip dari paket penyebaran.

```
aws lambda update-function-code \
  --function-name myFunction \
  --zip-file fileb://myFunction.zip
```

------