

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

# Mengkonfigurasi fungsi AWS Lambda
<a name="lambda-functions"></a>

Pelajari cara mengonfigurasi kemampuan dan opsi inti untuk fungsi Lambda Anda menggunakan API atau konsol Lambda.

**[arsip file.zip](configuration-function-zip.md) **  
Buat paket penerapan fungsi Lambda saat Anda ingin menyertakan dependensi, lapisan runtime kustom, atau file apa pun di luar kode fungsi Anda. Paket deployment adalah arsip file.zip yang berisi kode fungsi dan dependensi Anda.

**[Gambar kontainer](images-create.md) **  
Gunakan gambar kontainer untuk mengemas kode fungsi dan dependensi saat Anda memerlukan kontrol lebih besar atas proses pembuatan, atau jika fungsi Anda memerlukan konfigurasi runtime khusus. Anda dapat membangun, menguji, dan menerapkan fungsi Lambda sebagai gambar kontainer menggunakan alat seperti Docker CLI.

**[Memori](configuration-memory.md)**  
Pelajari bagaimana dan kapan harus meningkatkan memori fungsi.

**[Penyimpanan fana](configuration-ephemeral-storage.md) **  
Pelajari bagaimana dan kapan harus meningkatkan kapasitas penyimpanan sementara fungsi Anda.

**[Batas waktu](configuration-timeout.md) **  
Pelajari bagaimana dan kapan harus meningkatkan nilai batas waktu fungsi Anda.

**[Konfigurasi tahan lama](durable-configuration.md) **  
Aktifkan fungsi Lambda Anda berjalan untuk periode yang diperpanjang—hingga satu tahun—sambil mempertahankan status di antara pemanggilan. Konfigurasikan batas waktu eksekusi, retensi status, dan perilaku pembuatan versi untuk alur kerja stateful yang berjalan lama. Fungsi yang tahan lama memungkinkan Anda membangun proses multi-langkah yang kompleks yang dapat menjeda, melanjutkan, dan menangani interupsi secara otomatis.

** [Variabel lingkungan](configuration-envvars.md)**  
Anda dapat membuat kode fungsi Anda portabel dan menyimpan rahasia dari kode Anda dengan menyimpannya dalam konfigurasi fungsi Anda dengan menggunakan variabel lingkungan.

**[Jaringan keluar](configuration-vpc.md) **  
 Anda dapat menggunakan fungsi Lambda Anda dengan AWS sumber daya di VPC Amazon. Menghubungkan fungsi Anda ke VPC memungkinkan Anda mengakses sumber daya dalam subnet privat seperti basis data dan cache relasional.

** [Jaringan masuk](configuration-vpc-endpoints.md)**  
Anda dapat menggunakan titik akhir VPC antarmuka untuk menjalankan fungsi Lambda Anda tanpa melintasi internet publik.

**[Sistem berkas](configuration-filesystem.md)**  
 Anda dapat menggunakan fungsi Lambda untuk memasang Amazon EFS ke direktori lokal. Sistem file memungkinkan kode fungsi Anda untuk mengakses dan memodifikasi sumber daya bersama dengan aman dan pada konkurensi tinggi.

**[Alias](configuration-aliases.md)**  
Anda dapat mengonfigurasi klien Anda untuk memanggil versi fungsi Lambda tertentu dengan menggunakan alias, alih-alih memperbarui klien.

**[Versi](configuration-versions.md)**  
Dengan menerbitkan versi fungsi Anda, Anda dapat menyimpan kode dan konfigurasi Anda sebagai sumber daya terpisah yang tidak dapat diubah.

**[Tanda](configuration-tags.md)**  
Gunakan tag untuk mengaktifkan kontrol akses berbasis atribut (ABAC), untuk mengatur fungsi Lambda Anda, dan untuk memfilter dan menghasilkan laporan tentang fungsi Anda menggunakan atau layanan Billing and AWS Cost Explorer Cost AWS Management.

**[Streaming respons](configuration-response-streaming.md)**  
Anda dapat mengonfigurasi fungsi Lambda Anda URLs untuk mengalirkan muatan respons kembali ke klien. Streaming respons dapat menguntungkan aplikasi sensitif latensi dengan meningkatkan kinerja time to first byte (TTFB). Ini karena Anda dapat mengirim sebagian tanggapan kembali ke klien saat tersedia. Selain itu, Anda dapat menggunakan streaming respons untuk membangun fungsi yang mengembalikan muatan yang lebih besar.

**[Titik akhir metadata](configuration-metadata-endpoint.md)**  
Gunakan titik akhir metadata Lambda untuk menemukan Zona Ketersediaan mana fungsi Anda berjalan, memungkinkan Anda mengoptimalkan latensi dengan merutekan ke sumber daya Same-AZ dan menerapkan pola ketahanan AZ-aware.

# Menyebarkan fungsi Lambda sebagai arsip file.zip
<a name="configuration-function-zip"></a>

Saat Anda membuat fungsi Lambda, Anda mengemas kode fungsi Anda ke dalam paket penerapan. Lambda mendukung dua tipe paket deployment: gambar kontainer dan arsip file .zip. Alur kerja untuk membuat fungsi tergantung pada jenis paket penyebaran. Untuk mengonfigurasi fungsi yang didefinisikan sebagai gambar kontainer, lihat[Buat fungsi Lambda menggunakan gambar kontainer](images-create.md).

Anda dapat menggunakan konsol Lambda dan API Lambda untuk membuat fungsi yang ditentukan dengan arsip file.zip. Anda juga dapat mengunggah file.zip yang diperbarui untuk mengubah kode fungsi. 

**catatan**  
Anda tidak dapat mengubah [jenis paket penerapan](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html#lambda-CreateFunction-request-PackageType) (.zip atau image kontainer) untuk fungsi yang ada. Misalnya, Anda tidak dapat mengonversi fungsi gambar kontainer untuk menggunakan arsip file.zip. Anda harus membuat fungsi baru.

**Topics**
+ [Membuat fungsi](#configuration-function-create)
+ [Menggunakan editor kode konsol](#configuration-functions-console-update)
+ [Memperbarui kode fungsi](#configuration-function-update)
+ [Mengubah runtime](#configuration-function-runtime)
+ [Mengubah arsitektur](#configuration-function-arch)
+ [Menggunakan API Lambda](#configuration-function-api)
+ [Mengunduh kode fungsi Anda](#configuration-function-download)
+ [CloudFormation](#configuration-function-cloudformation)
+ [Mengenkripsi paket deployment .zip Lambda](encrypt-zip-package.md)

## Membuat fungsi
<a name="configuration-function-create"></a>

Saat Anda membuat fungsi yang ditentukan dengan arsip file.zip, Anda memilih templat kode, versi bahasa, dan peran eksekusi untuk fungsi tersebut. Anda menambahkan kode fungsi Anda setelah Lambda membuat fungsi.

**Untuk membuat fungsi**

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

1. Pilih **Buat fungsi**.

1. Pilih **Penulis dari awal** atau **Gunakan cetak biru** untuk membuat fungsi Anda. 

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

   1. Untuk **Nama fungsi**, masukkan nama fungsi. Nama fungsi dibatasi hingga 64 karakter panjangnya.

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

   1. (Opsional) Untuk **Arsitektur**, pilih arsitektur set instruksi yang akan digunakan untuk fungsi Anda. Arsitektur defaultnya adalah x86\$164. Ketika Anda membangun paket deployment untuk fungsi Anda, pastikan bahwa itu kompatibel dengan [arsitektur set instruksi](foundation-arch.md) ini.

1. (Opsional) Di bagian **Izin**, luaskan **Ubah peran eksekusi default**. Anda dapat membuat peran **Eksekusi baru atau menggunakan peran** yang sudah ada.

1. (Opsional) Perluas **pengaturan lanjutan**. Anda dapat memilih **konfigurasi penandatanganan Kode** untuk fungsi tersebut. Anda juga dapat mengonfigurasi (Amazon VPC) agar fungsi dapat diakses.

1. Pilih **Buat fungsi**.

Lambda menciptakan fungsi baru. Anda sekarang dapat menggunakan konsol untuk menambahkan kode fungsi dan mengkonfigurasi parameter dan fitur fungsi lainnya. Untuk petunjuk penerapan kode, lihat halaman handler untuk runtime yang digunakan fungsi Anda. 

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

[Deploy fungsi Lambda Node.js dengan arsip file .zip](nodejs-package.md) 

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

 [Bekerja dengan arsip file.zip untuk fungsi Python Lambda](python-package.md) 

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

 [Deploy fungsi Lambda Ruby dengan arsip file .zip](ruby-package.md) 

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

 [Deploy fungsi Java Lambda dengan arsip file .zip atau JAR](java-package.md) 

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

 [Deploy fungsi Go Lambda dengan arsip file .zip](golang-package.md) 

------
#### [ C\$1 ]

 [Bangun dan terapkan fungsi C\$1 Lambda dengan arsip file.zip](csharp-package.md) 

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

 [Menyebarkan fungsi PowerShell Lambda dengan arsip file.zip](powershell-package.md) 

------

## Menggunakan editor kode konsol
<a name="configuration-functions-console-update"></a>

Konsol membuat fungsi Lambda dengan satu file sumber. Untuk bahasa scripting, Anda dapat mengedit file ini dan menambahkan lebih banyak file menggunakan editor kode bawaan. Untuk menyimpan perubahan Anda, pilih **Simpan**. Selanjutnya, untuk menjalankan kode, pilih **Uji**.

Saat Anda menyimpan kode fungsi, konsol Lambda membuat paket penyebaran arsip file.zip. Saat Anda mengembangkan kode fungsi di luar konsol (menggunakan IDE), Anda perlu [membuat paket penerapan](nodejs-package.md) untuk mengunggah kode Anda ke fungsi Lambda.

## Memperbarui kode fungsi
<a name="configuration-function-update"></a>

Untuk bahasa scripting (Node.js, Python, dan Ruby), Anda dapat mengedit kode fungsi Anda di editor kode tertanam. Jika kode lebih besar dari 3MB, atau jika Anda perlu menambahkan pustaka, atau untuk bahasa yang tidak didukung editor (Java, Go, C \$1), Anda harus mengunggah kode fungsi Anda sebagai arsip.zip. Jika arsip file.zip lebih kecil dari 50 MB, Anda dapat mengunggah arsip file.zip dari mesin lokal Anda. Jika file lebih besar dari 50 MB, unggah file ke fungsi dari bucket Amazon S3.

**Untuk mengunggah kode fungsi sebagai arsip.zip**

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

1. Pilih fungsi yang akan diperbarui dan pilih tab **Kode**.

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

1. Pilih **file.zip**, lalu pilih **Unggah**. 

   1. Di pemilih file, pilih versi gambar baru, pilih **Buka**, lalu pilih **Simpan**.

1. (Alternatif untuk langkah 4) Pilih lokasi **Amazon S3**.

   1. **Di kotak teks, masukkan URL tautan S3 dari arsip file.zip, lalu pilih Simpan.**

## Mengubah runtime
<a name="configuration-function-runtime"></a>

Jika Anda memperbarui konfigurasi fungsi untuk menggunakan runtime baru, Anda mungkin perlu memperbarui kode fungsi agar kompatibel dengan runtime baru. Jika Anda memperbarui konfigurasi fungsi untuk menggunakan runtime yang berbeda, Anda **harus** memberikan kode fungsi baru yang kompatibel dengan runtime dan arsitektur. Untuk petunjuk tentang cara membuat paket deployment untuk kode fungsi, lihat halaman handler untuk runtime yang digunakan fungsi.

Gambar dasar Node.js 20, Python 3.12, Java 21, .NET 8, Ruby 3.3, dan yang lebih baru didasarkan pada gambar kontainer minimal Amazon Linux 2023. Gambar dasar sebelumnya menggunakan Amazon Linux 2. AL2023 memberikan beberapa keunggulan dibandingkan Amazon Linux 2, termasuk jejak penyebaran yang lebih kecil dan versi pustaka yang diperbarui seperti. `glibc` Untuk informasi selengkapnya, lihat [Memperkenalkan runtime Amazon Linux 2023 untuk AWS Lambda](https://aws.amazon.com/blogs/compute/introducing-the-amazon-linux-2023-runtime-for-aws-lambda/) di AWS Compute Blog.

**Untuk mengubah runtime**

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

1. Pilih fungsi yang akan diperbarui dan pilih tab **Kode**.

1. Gulir ke bawah ke bagian **pengaturan Runtime**, yang berada di bawah editor kode.

1. Pilih **Edit**.

   1. Untuk **Runtime**, pilih pengenal runtime.

   1. Untuk **Handler**, tentukan nama file dan handler untuk fungsi Anda.

   1. Untuk **Arsitektur**, pilih arsitektur set instruksi yang akan digunakan untuk fungsi Anda.

1. Pilih **Simpan**.

## Mengubah arsitektur
<a name="configuration-function-arch"></a>

Sebelum Anda dapat mengubah arsitektur set instruksi, Anda perlu memastikan bahwa kode fungsi Anda kompatibel dengan arsitektur target. 

Jika Anda menggunakan Node.js, Python, atau Ruby dan Anda mengedit kode fungsi Anda di editor tertanam, kode yang ada dapat berjalan tanpa modifikasi.

Namun, jika Anda memberikan kode fungsi Anda menggunakan paket penyebaran arsip file.zip, Anda harus menyiapkan arsip file.zip baru yang dikompilasi dan dibangun dengan benar untuk runtime target dan arsitektur set instruksi. Untuk instruksi, lihat halaman handler untuk runtime fungsi Anda.

**Untuk mengubah arsitektur set instruksi**

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

1. Pilih fungsi yang akan diperbarui dan pilih tab **Kode**.

1. Di bawah **Pengaturan waktu proses**, pilih **Edit**.

1. Untuk **Arsitektur**, pilih arsitektur set instruksi yang akan digunakan untuk fungsi Anda.

1. Pilih **Simpan**.

## Menggunakan API Lambda
<a name="configuration-function-api"></a>

Untuk membuat dan mengonfigurasi fungsi yang menggunakan arsip file.zip, gunakan operasi API berikut: 
+ [CreateFunction](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html)
+ [UpdateFunctionCode](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionCode.html)
+ [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html)

## Mengunduh kode fungsi Anda
<a name="configuration-function-download"></a>

Anda dapat mengunduh versi kode fungsi.zip saat ini yang tidak diterbitkan (`$LATEST`) melalui konsol Lambda. Untuk melakukan ini, pertama-tama pastikan bahwa Anda memiliki izin IAM berikut:
+ `iam:GetPolicy`
+ `iam:GetPolicyVersion`
+ `iam:GetRole`
+ `iam:GetRolePolicy`
+ `iam:ListAttachedRolePolicies`
+ `iam:ListRolePolicies`
+ `iam:ListRoles`

**Untuk mengunduh kode fungsi.zip**

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

1. Pilih fungsi yang ingin Anda unduh kode fungsi.zip.

1. Dalam **ikhtisar Fungsi**, pilih tombol **Unduh**, lalu pilih **Unduh kode fungsi.zip.**

   1. Atau, pilih **Unduh AWS SAM file** untuk menghasilkan dan mengunduh templat SAM berdasarkan konfigurasi fungsi Anda. Anda juga dapat memilih **Unduh keduanya** untuk mengunduh template.zip dan SAM.

## CloudFormation
<a name="configuration-function-cloudformation"></a>

Anda dapat menggunakan CloudFormation untuk membuat fungsi Lambda yang menggunakan arsip file.zip. Dalam CloudFormation template Anda, `AWS::Lambda::Function` sumber daya menentukan fungsi Lambda. Untuk deskripsi properti dalam `AWS::Lambda::Function` sumber daya, lihat [AWS::Lambda::Function](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html)di *Panduan AWS CloudFormation Pengguna*.

Dalam `AWS::Lambda::Function` sumber daya, atur properti berikut untuk membuat fungsi yang didefinisikan sebagai arsip file.zip:
+ AWS::Lambda::Function
  + PackageType — Setel ke`Zip`.
  + Kode - Masukkan nama bucket Amazon S3 dan nama file.zip di dan bidang. `S3Bucket` `S3Key` Untuk Node.js atau Python, Anda dapat memberikan kode sumber inline dari fungsi Lambda Anda.
  + Runtime - Tetapkan nilai runtime.
  + Arsitektur - Tetapkan nilai arsitektur `arm64` untuk menggunakan prosesor AWS Graviton2. Secara default, nilai arsitektur adalah`x86_64`.

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

------

# Buat fungsi Lambda menggunakan gambar kontainer
<a name="images-create"></a>

Kode AWS Lambda fungsi Anda terdiri dari skrip atau program yang dikompilasi dan dependensinya. Gunakan *paket deployment* untuk men-deploy fungsi kode Anda ke Lambda. Lambda mendukung dua tipe paket deployment: gambar kontainer dan arsip file .zip. 

Ada tiga cara untuk membangun image kontainer untuk fungsi Lambda:
+ [Menggunakan gambar AWS dasar untuk Lambda](#runtimes-images-lp)

  [Gambar AWS dasar](#runtimes-images-lp) dimuat sebelumnya dengan runtime bahasa, klien antarmuka runtime untuk mengelola interaksi antara Lambda dan kode fungsi Anda, dan emulator antarmuka runtime untuk pengujian lokal.
+ [Menggunakan gambar AWS dasar khusus OS](#runtimes-images-provided)

  [AWS Gambar dasar khusus OS](https://gallery.ecr.aws/lambda/provided) berisi distribusi Amazon Linux dan emulator antarmuka [runtime](https://github.com/aws/aws-lambda-runtime-interface-emulator/). Gambar-gambar ini biasanya digunakan untuk membuat gambar kontainer untuk bahasa yang dikompilasi, seperti [Go](go-image.md#go-image-provided) dan [Rust](lambda-rust.md), dan untuk versi bahasa atau bahasa yang Lambda tidak menyediakan gambar dasar, seperti Node.js 19. Anda juga dapat menggunakan gambar dasar khusus OS untuk mengimplementasikan runtime [kustom](runtimes-custom.md). Untuk membuat gambar kompatibel dengan Lambda, Anda harus menyertakan [klien antarmuka runtime](#images-ric) untuk bahasa Anda dalam gambar.
+ [Menggunakan gambar AWS non-dasar](#images-types)

  Anda dapat menggunakan gambar dasar alternatif dari registri kontainer lain, seperti Alpine Linux atau Debian. Anda juga dapat menggunakan gambar kustom yang dibuat oleh organisasi Anda. Untuk membuat gambar kompatibel dengan Lambda, Anda harus menyertakan [klien antarmuka runtime](#images-ric) untuk bahasa Anda dalam gambar.

**Tip**  
Untuk mengurangi waktu yang dibutuhkan agar fungsi kontainer Lambda menjadi aktif, lihat [Menggunakan build multi-tahap](https://docs.docker.com/build/building/multi-stage/) dalam dokumentasi Docker. Untuk membuat gambar kontainer yang efisien, ikuti [Praktik terbaik untuk menulis Dockerfiles](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/).

Untuk membuat fungsi Lambda dari image kontainer, buat gambar Anda secara lokal dan unggah ke repositori Amazon Elastic Container Registry (Amazon ECR). Jika Anda menggunakan gambar kontainer yang disediakan oleh [AWS Marketplace](https://docs.aws.amazon.com/marketplace/latest/userguide/container-based-products.html)penjual, Anda harus mengkloning gambar tersebut ke repositori Amazon ECR pribadi Anda terlebih dahulu. Kemudian, tentukan URI repositori saat Anda membuat fungsi. Repositori Amazon ECR harus sama Wilayah AWS dengan fungsi Lambda. Anda dapat membuat fungsi menggunakan gambar di AWS akun yang berbeda, selama gambar berada di Wilayah yang sama dengan fungsi Lambda. Untuk informasi selengkapnya, lihat [Izin lintas akun Amazon ECR](#configuration-images-xaccount-permissions).

**catatan**  
Lambda tidak mendukung titik akhir Amazon ECR FIPS untuk gambar kontainer. Jika URI repositori Anda termasuk`ecr-fips`, Anda menggunakan titik akhir FIPS. Contoh:`111122223333.dkr.ecr-fips.us-east-1.amazonaws.com`.

Halaman ini menjelaskan jenis gambar dasar dan persyaratan untuk membuat gambar kontainer yang kompatibel dengan Lambda.

**catatan**  
Anda tidak dapat mengubah [jenis paket penerapan](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html#lambda-CreateFunction-request-PackageType) (.zip atau image kontainer) untuk fungsi yang ada. Misalnya, Anda tidak dapat mengonversi fungsi gambar kontainer untuk menggunakan arsip file.zip. Anda harus membuat fungsi baru.

**Topics**
+ [Persyaratan](#images-reqs)
+ [Menggunakan gambar AWS dasar untuk Lambda](#runtimes-images-lp)
+ [Menggunakan gambar AWS dasar khusus OS](#runtimes-images-provided)
+ [Menggunakan gambar AWS non-dasar](#images-types)
+ [Klien antarmuka runtime](#images-ric)
+ [Izin Amazon ECR](#gettingstarted-images-permissions)
+ [Siklus hidup fungsi](#images-lifecycle)

## Persyaratan
<a name="images-reqs"></a>

Instal [AWS CLI versi 2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) dan [CLI Docker](https://docs.docker.com/get-docker). Selain itu, perhatikan persyaratan berikut:
+ Gambar kontainer harus mengimplementasikan file[Menggunakan API runtime Lambda untuk runtime kustom](runtimes-api.md). [Klien antarmuka runtime](#images-ric) sumber terbuka AWS menerapkan API. Anda dapat menambahkan klien antarmuka runtime untuk gambar dasar pilihan Anda untuk membuatnya kompatibel dengan Lambda.
+ Gambar kontainer harus dapat berjalan pada sistem file hanya baca. Kode fungsi Anda dapat mengakses `/tmp` direktori yang dapat ditulis dengan penyimpanan antara 512 MB dan 10.240 MB, dengan penambahan 1-MB, penyimpanan. 
+ Pengguna Lambda default harus dapat membaca semua file yang diperlukan untuk menjalankan kode fungsi Anda. Lambda mengikuti praktik terbaik keamanan dengan mendefinisikan pengguna Linux default dengan izin yang paling tidak istimewa. Ini berarti Anda tidak perlu menentukan [USER](https://docs.docker.com/reference/dockerfile/#user) di Dockerfile Anda. Verifikasi bahwa kode aplikasi Anda tidak bergantung pada file yang dibatasi pengguna Linux lain untuk berjalan.
+ Lambda hanya mendukung gambar kontainer berbasis Linux.
+ Lambda menyediakan gambar dasar multi-arsitektur. Namun, gambar yang Anda buat untuk fungsi Anda harus menargetkan hanya satu arsitektur. Lambda tidak mendukung fungsi yang menggunakan gambar wadah multi-arsitektur.

## Menggunakan gambar AWS dasar untuk Lambda
<a name="runtimes-images-lp"></a>

Anda dapat menggunakan salah satu [gambar AWS dasar](https://gallery.ecr.aws/lambda/) untuk Lambda untuk membangun gambar kontainer untuk kode fungsi Anda. Gambar dasar yang dimuat sebelumnya dengan runtime bahasa dan komponen lain yang diperlukan untuk menjalankan gambar kontainer pada Lambda. Anda menambahkan kode fungsi dan dependensi ke gambar dasar, lalu mengemasnya sebagai gambar kontainer.

AWS secara berkala memberikan pembaruan pada gambar AWS dasar untuk Lambda. [Jika Dockerfile Anda menyertakan nama gambar di properti FROM, klien Docker Anda akan menarik versi terbaru gambar dari repositori Amazon ECR.](https://gallery.ecr.aws/lambda/) Untuk menggunakan gambar dasar diperbarui, Anda harus membangun kembali gambar kontainer Anda dan [memperbarui kode fungsi](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-code.html).

Gambar dasar Node.js 20, Python 3.12, Java 21, .NET 8, Ruby 3.3, dan yang lebih baru didasarkan pada gambar kontainer minimal [Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/minimal-container.html). Gambar dasar sebelumnya menggunakan Amazon Linux 2. AL2023 memberikan beberapa keunggulan dibandingkan Amazon Linux 2, termasuk jejak penyebaran yang lebih kecil dan versi pustaka yang diperbarui seperti. `glibc`

AL2023gambar berbasis menggunakan `microdnf` (symlinked as`dnf`) sebagai manajer paket alih-alih`yum`, yang merupakan manajer paket default di Amazon Linux 2. `microdnf`adalah implementasi mandiri dari. `dnf` Untuk daftar paket yang disertakan dalam gambar AL2023 berbasis, lihat kolom **Penampung Minimal** di [Membandingkan paket yang diinstal di Amazon Linux 2023 Container Images](https://docs.aws.amazon.com/linux/al2023/ug/al2023-container-image-types.html). Untuk informasi selengkapnya tentang perbedaan antara AL2023 dan Amazon Linux 2, lihat [Memperkenalkan runtime Amazon Linux 2023 untuk AWS Lambda di Blog](https://aws.amazon.com/blogs/compute/introducing-the-amazon-linux-2023-runtime-for-aws-lambda/) AWS Komputasi.

**catatan**  
Untuk menjalankan image AL2023 berbasis lokal, termasuk with AWS Serverless Application Model (AWS SAM), Anda harus menggunakan Docker versi 20.10.10 atau yang lebih baru.

Untuk membuat gambar kontainer menggunakan gambar AWS dasar, pilih instruksi untuk bahasa pilihan Anda:
+ [Node.js](nodejs-image.md#nodejs-image-instructions)
+ [TypeScript](typescript-image.md#base-image-typescript)(menggunakan gambar dasar Node.js)
+ [Python](python-image.md#python-image-instructions)
+ [Java](java-image.md#java-image-instructions) 
+ [Go](go-image.md#go-image-provided)
+ [.NET](csharp-image.md#csharp-image-instructions)
+ [Ruby](ruby-image.md#ruby-image-instructions)

## Menggunakan gambar AWS dasar khusus OS
<a name="runtimes-images-provided"></a>

[AWS Gambar dasar khusus OS](https://gallery.ecr.aws/lambda/provided) berisi distribusi Amazon Linux dan emulator antarmuka [runtime](https://github.com/aws/aws-lambda-runtime-interface-emulator/). Gambar-gambar ini biasanya digunakan untuk membuat gambar kontainer untuk bahasa yang dikompilasi, seperti [Go](go-image.md#go-image-provided) dan [Rust](lambda-rust.md), dan untuk versi bahasa atau bahasa yang Lambda tidak menyediakan gambar dasar, seperti Node.js 19. Anda juga dapat menggunakan gambar dasar khusus OS untuk mengimplementasikan runtime [kustom](runtimes-custom.md). Untuk membuat gambar kompatibel dengan Lambda, Anda harus menyertakan [klien antarmuka runtime](#images-ric) untuk bahasa Anda dalam gambar.


| Tanda | Waktu berjalan | Sistem operasi | Dockerfile | penghentian | 
| --- | --- | --- | --- | --- | 
| al2023 | Runtime Khusus OS | Amazon Linux 2023 | [Dockerfile untuk Runtime khusus OS aktif GitHub](https://github.com/aws/aws-lambda-base-images/blob/provided.al2023/Dockerfile.provided.al2023) |   30 Jun 2029   | 
| al2 | Runtime Khusus OS | Amazon Linux 2 | [Dockerfile untuk Runtime khusus OS aktif GitHub](https://github.com/aws/aws-lambda-base-images/blob/provided.al2/Dockerfile.provided.al2) |   Juli 31, 2026   | 

Galeri Publik Registri Kontainer Elastis Amazon: [gallery.ecr. aws/lambda/provided](https://gallery.ecr.aws/lambda/provided)

## Menggunakan gambar AWS non-dasar
<a name="images-types"></a>

Lambda mendukung gambar apa pun yang sesuai dengan salah satu format manifes gambar berikut:
+ Docker Image Manifest V2, skema 2 (digunakan dengan Docker versi 1.10 dan yang lebih baru)
+ Spesifikasi Open Container Initiative (OCI) (v1.0.0 dan yang lebih tinggi)

Lambda mendukung ukuran gambar maksimum yang tidak terkompresi 10 GB, termasuk semua lapisan.

**catatan**  
Untuk membuat gambar kompatibel dengan Lambda, Anda harus menyertakan [klien antarmuka runtime](#images-ric) untuk bahasa Anda dalam gambar.
Untuk kinerja optimal, pertahankan ukuran manifes gambar Anda di bawah 25.400 byte. Untuk mengurangi ukuran manifes gambar, minimalkan jumlah lapisan dalam gambar Anda dan kurangi anotasi.

## Klien antarmuka runtime
<a name="images-ric"></a>

Jika Anda menggunakan gambar [dasar khusus OS atau gambar dasar](#runtimes-images-provided) alternatif, Anda harus menyertakan klien antarmuka runtime dalam gambar Anda. Klien antarmuka runtime harus memperluas[Menggunakan API runtime Lambda untuk runtime kustom](runtimes-api.md), yang mengelola interaksi antara Lambda dan kode fungsi Anda. AWS menyediakan klien antarmuka runtime sumber terbuka untuk bahasa berikut:
+  [Node.js](nodejs-image.md#nodejs-image-clients) 
+  [Python](python-image.md#python-image-clients) 
+  [Java](java-image.md#java-image-clients) 
+  [.NET](csharp-image.md#csharp-image-clients) 
+  [Go](go-image.md#go-image-clients) 
+  [Ruby](ruby-image.md#ruby-image-clients) 
+  [Karat](lambda-rust.md) — 

Jika Anda menggunakan bahasa yang tidak memiliki klien antarmuka runtime AWS yang disediakan, Anda harus membuatnya sendiri.

## Izin Amazon ECR
<a name="gettingstarted-images-permissions"></a>

Sebelum Anda membuat fungsi Lambda dari gambar kontainer, Anda harus membangun gambar secara lokal dan mengunggahnya ke repositori Amazon ECR. Saat Anda membuat fungsi, tentukan URI repositori Amazon ECR.

Pastikan bahwa izin untuk pengguna atau peran yang membuat fungsi mencakup`GetRepositoryPolicy`,, `SetRepositoryPolicy``BatchGetImage`, dan`GetDownloadUrlForLayer`.

Untuk contoh, gunakan konsol IAM untuk membuat peran dengan kebijakan berikut:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "ecr:SetRepositoryPolicy",
        "ecr:GetRepositoryPolicy",
        "ecr:BatchGetImage",
        "ecr:GetDownloadUrlForLayer"
      ],
      "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/hello-world"
    }
  ]
}
```

------

### Kebijakan repositori Amazon ECR
<a name="configuration-images-permissions"></a>

Untuk fungsi di akun yang sama dengan gambar penampung di Amazon ECR, Anda dapat menambahkan `ecr:BatchGetImage` dan `ecr:GetDownloadUrlForLayer` mengizinkan kebijakan repositori Amazon ECR Anda. Contoh berikut menunjukkan kebijakan minimum:

```
{
        "Sid": "LambdaECRImageRetrievalPolicy",
        "Effect": "Allow",
        "Principal": {
          "Service": "lambda.amazonaws.com"
        },
        "Action": [
          "ecr:BatchGetImage",
          "ecr:GetDownloadUrlForLayer"
        ]
    }
```

Untuk informasi selengkapnya tentang izin repositori Amazon ECR, lihat [Kebijakan repositori pribadi di Panduan Pengguna *Amazon* Elastic](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policies.html) Container Registry.

Jika repositori Amazon ECR tidak menyertakan izin ini, Lambda mencoba menambahkannya secara otomatis. Lambda dapat menambahkan izin hanya jika pemanggil utama Lambda memiliki dan izin. `ecr:getRepositoryPolicy` `ecr:setRepositoryPolicy` 

Untuk melihat atau mengedit izin repositori Amazon ECR Anda, ikuti petunjuk dalam [Menyetel pernyataan kebijakan repositori pribadi di Panduan Pengguna *Amazon* Elastic Container](https://docs.aws.amazon.com/AmazonECR/latest/userguide/set-repository-policy.html) Registry.

#### Izin lintas akun Amazon ECR
<a name="configuration-images-xaccount-permissions"></a>

Akun yang berbeda di wilayah yang sama dapat membuat fungsi yang menggunakan gambar kontainer yang dimiliki oleh akun Anda. Dalam contoh berikut, [kebijakan izin repositori Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/set-repository-policy.html) Anda memerlukan pernyataan berikut untuk memberikan akses ke nomor akun 123456789012.
+ **CrossAccountPermission**— Memungkinkan akun 123456789012 untuk membuat dan memperbarui fungsi Lambda yang menggunakan gambar dari repositori ECR ini.
+ **Lambda** — ECRImage CrossAccountRetrievalPolicy Lambda pada akhirnya akan menyetel status fungsi menjadi tidak aktif jika tidak dipanggil untuk waktu yang lama. Pernyataan ini diperlukan agar Lambda dapat mengambil gambar kontainer untuk optimasi dan caching atas nama fungsi yang dimiliki oleh 123456789012. 

**Example — Tambahkan izin lintas akun ke repositori Anda**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CrossAccountPermission",
      "Effect": "Allow",
      "Action": [
        "ecr:BatchGetImage",
        "ecr:GetDownloadUrlForLayer"
      ],
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:root"
      },
      "Resource": "arn:aws:ecr:us-east-1:123456789012:repository/example-lambda-repository"
    },
    {
      "Sid": "LambdaECRImageCrossAccountRetrievalPolicy",
      "Effect": "Allow",
      "Action": [
        "ecr:BatchGetImage",
        "ecr:GetDownloadUrlForLayer"
      ],
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Condition": {
        "ArnLike": {
          "aws:sourceARN": "arn:aws:lambda:us-east-1:123456789012:function:*"
        }
      },
      "Resource": "arn:aws:ecr:us-east-1:123456789012:repository/example-lambda-repository"
    }
  ]
}
```

Untuk memberikan akses ke beberapa akun, Anda menambahkan akun IDs ke daftar Utama dalam `CrossAccountPermission` kebijakan dan daftar Evaluasi kondisi di`LambdaECRImageCrossAccountRetrievalPolicy`.

Jika Anda bekerja dengan beberapa akun di AWS Organisasi, sebaiknya Anda menghitung setiap ID akun dalam kebijakan izin ECR. Pendekatan ini sejalan dengan praktik terbaik AWS keamanan dalam menyetel izin sempit dalam kebijakan IAM.

Selain izin Lambda, pengguna atau peran yang membuat fungsi juga harus memiliki `BatchGetImage` dan izin. `GetDownloadUrlForLayer`

## Siklus hidup fungsi
<a name="images-lifecycle"></a>

Setelah Anda mengunggah gambar kontainer baru atau yang diperbarui, Lambda mengoptimalkan gambar sebelum fungsi dapat memproses pemanggilan. Proses pengoptimalan dapat memakan waktu beberapa detik. Fungsi tetap dalam `Pending` keadaan sampai proses selesai, ketika keadaan transisi ke. `Active` Anda tidak dapat memanggil fungsi sampai mencapai `Active` status. 

Jika fungsi tidak dipanggil selama beberapa minggu, Lambda mengeklaim kembali versi dioptimalkan, dan fungsi bertransisi ke status `Inactive`. Untuk mengaktifkan kembali fungsinya, Anda harus memanggilnya. Lambda menolak invokasi pertama dan fungsi memasuki status `Pending` sampai Lambda mengoptimalkan kembali gambar. Fungsi kemudian kembali ke status `Active`.

Lambda secara berkala mengambil gambar kontainer terkait dari repositori Amazon ECR. Jika image kontainer yang sesuai tidak ada lagi di Amazon ECR atau izin dicabut, fungsi akan memasuki `Failed` status, dan Lambda mengembalikan kegagalan untuk pemanggilan fungsi apa pun.

Anda dapat menggunakan API Lambda untuk mendapatkan informasi tentang status fungsi. Lihat informasi yang lebih lengkap di [Status fungsi Lambda](functions-states.md).

# Konfigurasikan memori fungsi Lambda
<a name="configuration-memory"></a>

Lambda memberikan daya CPU sebanding dengan jumlah memori yang dikonfigurasi. *Memori* adalah jumlah memori yang tersedia untuk fungsi Lambda saat waktu aktif. Anda dapat menambah atau mengurangi memori dan daya CPU yang dialokasikan ke fungsi Anda menggunakan pengaturan **Memori**. Anda dapat mengonfigurasi memori antara 128 MB dan 10.240 MB dengan peningkatan 1-MB. Pada 1.769 MB, fungsi memiliki ekuivalensi sebesar satu vCPU (satu detik vCPU dari kredit per detik).

Halaman ini menjelaskan bagaimana dan kapan harus memperbarui pengaturan memori untuk fungsi Lambda.

**Topics**
+ [Menentukan pengaturan memori yang sesuai untuk fungsi Lambda](#configuration-memory-use-cases)
+ [Mengonfigurasi memori fungsi (konsol)](#configuration-memory-console)
+ [Mengkonfigurasi memori fungsi ()AWS CLI](#configuration-memory-cli)
+ [Mengkonfigurasi memori fungsi ()AWS SAM](#configuration-memory-sam)
+ [Menerima rekomendasi memori fungsi (konsol)](#configuration-memory-optimization-accept)

## Menentukan pengaturan memori yang sesuai untuk fungsi Lambda
<a name="configuration-memory-use-cases"></a>

Memori adalah tuas utama untuk mengontrol kinerja suatu fungsi. Pengaturan default, 128 MB, adalah pengaturan serendah mungkin. Kami menyarankan Anda hanya menggunakan 128 MB untuk fungsi Lambda sederhana, seperti yang mengubah dan merutekan acara ke layanan lain AWS . Alokasi memori yang lebih tinggi dapat meningkatkan kinerja untuk fungsi yang menggunakan pustaka impor[, lapisan Lambda,](chapter-layers.md) Amazon Simple Storage Service (Amazon S3) atau Amazon Elastic File System (Amazon EFS). Menambahkan lebih banyak memori secara proporsional meningkatkan jumlah CPU, meningkatkan daya komputasi keseluruhan yang tersedia. Jika suatu fungsi adalah CPU, jaringan atau terikat memori, maka meningkatkan pengaturan memori dapat secara dramatis meningkatkan kinerjanya.

Untuk menemukan konfigurasi memori yang tepat, pantau fungsi Anda dengan Amazon CloudWatch dan atur alarm jika konsumsi memori mendekati maksimum yang dikonfigurasi. Ini dapat membantu mengidentifikasi fungsi terikat memori. Untuk fungsi CPU-bound dan IO-bound, pemantauan durasi juga dapat memberikan wawasan. Dalam kasus ini, meningkatkan memori dapat membantu menyelesaikan kemacetan komputasi atau jaringan.

Anda juga dapat mempertimbangkan untuk menggunakan alat [AWS Lambda Power Tuning](https://github.com/alexcasalboni/aws-lambda-power-tuning) open source. Alat ini digunakan AWS Step Functions untuk menjalankan beberapa versi bersamaan dari fungsi Lambda pada alokasi memori yang berbeda dan mengukur kinerja. Fungsi input berjalan di AWS akun Anda, melakukan panggilan HTTP langsung dan interaksi SDK, untuk mengukur kemungkinan kinerja dalam skenario produksi langsung. Anda juga dapat menerapkan CI/CD proses untuk menggunakan alat ini untuk secara otomatis mengukur kinerja fungsi baru yang Anda terapkan.

## Mengonfigurasi memori fungsi (konsol)
<a name="configuration-memory-console"></a>

Anda dapat mengonfigurasi memori fungsi Anda di konsol Lambda.

**Untuk memperbarui memori fungsi**

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

1. Pilih fungsi.

1. Pilih tab **Konfigurasi** dan kemudian pilih **Konfigurasi umum**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/configuration-tab.png)

1. Di bagian **Konfigurasi umum**, pilih **Edit**.

1. Untuk **Memori**, tetapkan nilai dari 128 MB menjadi 10.240 MB.

1. Pilih **Simpan**.

## Mengkonfigurasi memori fungsi ()AWS CLI
<a name="configuration-memory-cli"></a>

Anda dapat menggunakan [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html)perintah untuk mengkonfigurasi memori fungsi Anda.

**Example**  

```
aws lambda update-function-configuration \
  --function-name my-function \
  --memory-size 1024
```

## Mengkonfigurasi memori fungsi ()AWS SAM
<a name="configuration-memory-sam"></a>

Anda dapat menggunakan [AWS Serverless Application Model](https://docs.aws.amazon.com//serverless-application-model/latest/developerguide/serverless-getting-started.html )untuk mengkonfigurasi memori untuk fungsi Anda. Perbarui [MemorySize](https://docs.aws.amazon.com//serverless-application-model/latest/developerguide/sam-resource-function.html#sam-function-memorysize)properti di `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: 1024
      # Other function properties...
```

## Menerima rekomendasi memori fungsi (konsol)
<a name="configuration-memory-optimization-accept"></a>

Jika Anda memiliki izin administrator di AWS Identity and Access Management (IAM), Anda dapat memilih untuk menerima rekomendasi pengaturan memori fungsi Lambda dari. AWS Compute Optimizer Untuk petunjuk cara memilih rekomendasi memori untuk akun atau organisasi Anda, lihat [Memilih akun Anda](https://docs.aws.amazon.com/compute-optimizer/latest/ug/getting-started.html#account-opt-in) di *AWS Compute Optimizer Panduan Pengguna*.

**catatan**  
Compute Optimizer hanya mendukung fungsi yang menggunakan arsitektur x86\$164.

**Ketika Anda telah memilih dan [fungsi Lambda Anda memenuhi persyaratan Compute Optimizer](https://docs.aws.amazon.com/compute-optimizer/latest/ug/requirements.html#requirements-lambda-functions), Anda dapat melihat dan menerima rekomendasi memori fungsi dari Compute Optimizer di konsol Lambda dalam konfigurasi Umum.**

# Konfigurasikan penyimpanan singkat untuk fungsi Lambda
<a name="configuration-ephemeral-storage"></a>

Lambda menyediakan penyimpanan sementara untuk fungsi dalam direktori. `/tmp` Penyimpanan ini bersifat sementara dan unik untuk setiap lingkungan eksekusi. Anda dapat mengontrol jumlah penyimpanan sementara yang dialokasikan ke fungsi Anda menggunakan pengaturan penyimpanan **Ephemeral**. Anda dapat mengonfigurasi penyimpanan sementara antara 512 MB dan 10.240 MB, dengan peningkatan 1-MB. Semua data yang disimpan `/tmp` dienkripsi saat istirahat dengan kunci yang dikelola oleh. AWS

Halaman ini menjelaskan kasus penggunaan umum dan cara memperbarui penyimpanan sementara untuk fungsi Lambda.

**Topics**
+ [Kasus penggunaan umum untuk peningkatan penyimpanan sementara](#configuration-ephemeral-storage-use-cases)
+ [Mengkonfigurasi penyimpanan sementara (konsol)](#configuration-ephemeral-storage-console)
+ [Mengkonfigurasi penyimpanan sementara ()AWS CLI](#configuration-ephemeral-storage-cli)
+ [Mengkonfigurasi penyimpanan sementara ()AWS SAM](#configuration-ephemeral-storage-sam)

## Kasus penggunaan umum untuk peningkatan penyimpanan sementara
<a name="configuration-ephemeral-storage-use-cases"></a>

Berikut adalah beberapa kasus penggunaan umum yang mendapat manfaat dari peningkatan penyimpanan sementara:
+ **Extract-transform-load Pekerjaan (ETL):** Tingkatkan penyimpanan sementara saat kode Anda melakukan komputasi menengah atau mengunduh sumber daya lain untuk menyelesaikan pemrosesan. Lebih banyak ruang sementara memungkinkan pekerjaan ETL yang lebih kompleks untuk berjalan di fungsi Lambda.
+ **Inferensi pembelajaran mesin (ML):** Banyak tugas inferensi bergantung pada file data referensi besar, termasuk perpustakaan dan model. Dengan penyimpanan yang lebih singkat, Anda dapat mengunduh model yang lebih besar dari Amazon Simple Storage Service (Amazon S3) `/tmp` ke dan menggunakannya dalam pemrosesan Anda.
+ **Pemrosesan data:** Untuk beban kerja yang mengunduh objek dari Amazon S3 sebagai respons terhadap peristiwa S3, `/tmp` lebih banyak ruang memungkinkan untuk menangani objek yang lebih besar tanpa menggunakan pemrosesan dalam memori. Beban kerja yang membuat PDFs atau memproses media juga mendapat manfaat dari penyimpanan yang lebih singkat.
+ **Pemrosesan grafis:** Pemrosesan gambar adalah kasus penggunaan umum untuk aplikasi berbasis Lambda. Untuk beban kerja yang memproses file TIFF besar atau citra satelit, penyimpanan yang lebih singkat memudahkan penggunaan pustaka dan melakukan perhitungan di Lambda.

## Mengkonfigurasi penyimpanan sementara (konsol)
<a name="configuration-ephemeral-storage-console"></a>

Anda dapat mengonfigurasi penyimpanan sementara di konsol Lambda.

**Untuk memodifikasi penyimpanan sementara untuk suatu fungsi**

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

1. Pilih fungsi.

1. Pilih tab **Konfigurasi** dan kemudian pilih **Konfigurasi umum**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/configuration-tab.png)

1. Di bagian **Konfigurasi umum**, pilih **Edit**.

1. Untuk **penyimpanan Ephemeral**, tetapkan nilai antara 512 MB dan 10.240 MB, dengan peningkatan 1-MB.

1. Pilih **Simpan**.

## Mengkonfigurasi penyimpanan sementara ()AWS CLI
<a name="configuration-ephemeral-storage-cli"></a>

Anda dapat menggunakan [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html)perintah untuk mengkonfigurasi penyimpanan sementara.

**Example**  

```
aws lambda update-function-configuration \
  --function-name my-function \
  --ephemeral-storage '{"Size": 1024}'
```

## Mengkonfigurasi penyimpanan sementara ()AWS SAM
<a name="configuration-ephemeral-storage-sam"></a>

Anda dapat menggunakan [AWS Serverless Application Model](https://docs.aws.amazon.com//serverless-application-model/latest/developerguide/serverless-getting-started.html )untuk mengkonfigurasi penyimpanan sementara untuk fungsi Anda. Perbarui [EphemeralStorage](https://docs.aws.amazon.com//serverless-application-model/latest/developerguide/sam-resource-function.html#sam-function-ephemeralstorage)properti di `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: nodejs22.x
      Architectures:
        - x86_64
      EphemeralStorage:
        Size: 10240
      # Other function properties...
```

# Memilih dan mengonfigurasi arsitektur set instruksi untuk fungsi Lambda Anda
<a name="foundation-arch"></a>

 *Arsitektur set instruksi* dari fungsi Lambda menentukan jenis prosesor komputer yang digunakan Lambda untuk menjalankan fungsi tersebut. Lambda menyediakan pilihan arsitektur set instruksi:
+ arm64 - arsitektur ARM 64-bit, untuk prosesor AWS Graviton2.
+ x86\$164 - arsitektur x86 64-bit, untuk prosesor berbasis x86.

**catatan**  
Arsitektur arm64 tersedia di sebagian besar Wilayah AWS. Untuk informasi selengkapnya, silakan lihat [Harga AWS Lambda](https://aws.amazon.com//lambda/pricing/#aws-element-9ccd9262-b656-4d9c-8a72-34ee6b662135). Dalam tabel harga memori, pilih tab **Arm Price**, lalu buka daftar dropdown **Region** untuk melihat Wilayah AWS dukungan arm64 dengan Lambda.  
Untuk contoh cara membuat fungsi dengan arsitektur arm64, lihat [AWS Lambda Functions Powered by AWS Graviton2](https://aws.amazon.com/blogs/aws/aws-lambda-functions-powered-by-aws-graviton2-processor-run-your-functions-on-arm-and-get-up-to-34-better-price-performance/) Processor.

**Topics**
+ [Keuntungan menggunakan arsitektur arm64](#foundation-arch-adv)
+ [Persyaratan untuk migrasi ke arsitektur arm64](#foundation-arch-consider)
+ [Kompatibilitas kode fungsi dengan arsitektur arm64](#foundation-arch-considerations)
+ [Cara bermigrasi ke arsitektur arm64](#foundation-arch-steps)
+ [Mengkonfigurasi arsitektur set instruksi](#foundation-arch-config)

## Keuntungan menggunakan arsitektur arm64
<a name="foundation-arch-adv"></a>

Fungsi Lambda yang menggunakan arsitektur arm64 (prosesor AWS Graviton2) dapat mencapai harga dan kinerja yang jauh lebih baik daripada fungsi setara yang berjalan pada arsitektur x86\$164. Pertimbangkan untuk menggunakan arm64 untuk aplikasi komputasi intensif seperti komputasi kinerja tinggi, pengkodean video, dan beban kerja simulasi.

CPU Graviton2 menggunakan inti Neoverse N1 dan mendukung Armv8.2 (termasuk CRC dan ekstensi crypto) ditambah beberapa ekstensi arsitektur lainnya.

Graviton2 mengurangi waktu baca memori dengan menyediakan cache L2 yang lebih besar per vCPU, yang meningkatkan kinerja latensi backend web dan seluler, layanan mikro, dan sistem pemrosesan data. Graviton2 juga menyediakan peningkatan kinerja enkripsi dan mendukung set instruksi yang meningkatkan latensi inferensi pembelajaran mesin berbasis CPU.

[Untuk informasi lebih lanjut tentang AWS Graviton2, lihat AWS Prosesor Graviton.](https://aws.amazon.com/ec2/graviton)

## Persyaratan untuk migrasi ke arsitektur arm64
<a name="foundation-arch-consider"></a>

Saat Anda memilih fungsi Lambda untuk bermigrasi ke arsitektur arm64, untuk memastikan migrasi lancar, pastikan fungsi Anda memenuhi persyaratan berikut:
+ Paket penyebaran hanya berisi komponen sumber terbuka dan kode sumber yang Anda kontrol, sehingga Anda dapat membuat pembaruan yang diperlukan untuk migrasi.
+ Jika kode fungsi menyertakan dependensi pihak ketiga, setiap pustaka atau paket menyediakan versi arm64.

## Kompatibilitas kode fungsi dengan arsitektur arm64
<a name="foundation-arch-considerations"></a>

Kode fungsi Lambda Anda harus kompatibel dengan arsitektur set instruksi fungsi. Sebelum Anda memigrasikan fungsi ke arsitektur arm64, perhatikan poin-poin berikut tentang kode fungsi saat ini:
+ Jika Anda menambahkan kode fungsi Anda menggunakan editor kode tertanam, kode Anda mungkin berjalan pada salah satu arsitektur tanpa modifikasi.
+ Jika Anda mengunggah kode fungsi, Anda harus mengunggah kode baru yang kompatibel dengan arsitektur target Anda.
+ Jika fungsi Anda menggunakan lapisan, Anda harus [memeriksa setiap lapisan](adding-layers.md#finding-layer-information) untuk memastikan bahwa itu kompatibel dengan arsitektur baru. Jika lapisan tidak kompatibel, edit fungsi untuk mengganti versi lapisan saat ini dengan versi lapisan yang kompatibel.
+ Jika fungsi Anda menggunakan ekstensi Lambda, Anda harus memeriksa setiap ekstensi untuk memastikan bahwa itu kompatibel dengan arsitektur baru.
+ Jika fungsi Anda menggunakan jenis paket penyebaran gambar kontainer, Anda harus membuat image kontainer baru yang kompatibel dengan arsitektur fungsi.

## Cara bermigrasi ke arsitektur arm64
<a name="foundation-arch-steps"></a>



Untuk memigrasikan fungsi Lambda ke arsitektur arm64, sebaiknya ikuti langkah-langkah berikut:

1. Buat daftar dependensi untuk aplikasi atau beban kerja Anda. Ketergantungan umum meliputi:
   + Semua pustaka dan paket yang digunakan fungsi.
   + Alat yang Anda gunakan untuk membangun, menyebarkan, dan menguji fungsi, seperti kompiler, rangkaian pengujian, integrasi berkelanjutan dan pipeline pengiriman berkelanjutan (CI/CD), alat penyediaan, dan skrip.
   + Ekstensi Lambda dan alat pihak ketiga yang Anda gunakan untuk memantau fungsi dalam produksi.

1. Untuk setiap dependensi, periksa versinya, lalu periksa apakah versi arm64 tersedia.

1. Bangun lingkungan untuk memigrasikan aplikasi Anda.

1. Bootstrap aplikasi.

1. Uji dan debug aplikasi.

1. Uji kinerja fungsi arm64. Bandingkan kinerjanya dengan versi x86\$164.

1. Perbarui pipeline infrastruktur Anda untuk mendukung fungsi Lambda arm64.

1. Tahap penyebaran Anda ke produksi.

   Misalnya, gunakan [konfigurasi perutean alias](configuring-alias-routing.md) untuk membagi lalu lintas antara versi x86 dan arm64 fungsi, dan bandingkan kinerja dan latensi.

Untuk informasi selengkapnya tentang cara membuat lingkungan kode untuk arsitektur arm64, termasuk informasi khusus bahasa untuk Java, Go, .NET, dan Python, lihat repositori [Memulai](https://github.com/aws/aws-graviton-getting-started) dengan Graviton. AWS GitHub

## Mengkonfigurasi arsitektur set instruksi
<a name="foundation-arch-config"></a>

Anda dapat mengonfigurasi arsitektur set instruksi untuk fungsi Lambda baru dan yang sudah ada menggunakan konsol Lambda,, AWS Command Line Interface () AWS SDKs AWS CLI, atau. CloudFormation Ikuti langkah-langkah ini untuk mengubah arsitektur set instruksi untuk fungsi Lambda yang ada dari konsol.

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

1. Pilih nama fungsi yang ingin Anda konfigurasikan arsitektur set instruksi.

1. Pada tab **Kode** utama, untuk bagian **Pengaturan Runtime**, pilih **Edit**.

1. Di bawah **Arsitektur**, pilih arsitektur set instruksi yang ingin digunakan oleh fungsi Anda.

1. Pilih **Simpan**.

# Konfigurasikan batas waktu fungsi Lambda
<a name="configuration-timeout"></a>

Lambda menjalankan kode Anda untuk jangka waktu tertentu sebelum waktu habis. *Timeout* adalah jumlah waktu maksimum dalam hitungan detik yang dapat dijalankan oleh fungsi Lambda. Nilai default untuk pengaturan ini adalah 3 detik, tetapi Anda dapat menyesuaikannya dengan penambahan 1 detik hingga nilai maksimum 900 detik (15 menit).

Halaman ini menjelaskan bagaimana dan kapan harus memperbarui pengaturan batas waktu untuk fungsi Lambda.

**Topics**
+ [Menentukan nilai batas waktu yang sesuai untuk fungsi Lambda](#configuration-timeout-use-cases)
+ [Mengkonfigurasi batas waktu (konsol)](#configuration-timeout-console)
+ [Mengkonfigurasi batas waktu ()AWS CLI](#configuration-timeout-cli)
+ [Mengkonfigurasi batas waktu ()AWS SAM](#configuration-timeout-sam)

## Menentukan nilai batas waktu yang sesuai untuk fungsi Lambda
<a name="configuration-timeout-use-cases"></a>

Jika nilai batas waktu mendekati durasi rata-rata suatu fungsi, ada risiko yang lebih tinggi bahwa fungsi tersebut akan habis secara tak terduga. Durasi suatu fungsi dapat bervariasi berdasarkan jumlah transfer dan pemrosesan data, dan latensi layanan apa pun yang berinteraksi dengan fungsi tersebut. Beberapa penyebab umum batas waktu meliputi:
+ Unduhan dari Amazon Simple Storage Service (Amazon S3) lebih besar atau memakan waktu lebih lama dari rata-rata.
+ Fungsi membuat permintaan ke layanan lain, yang membutuhkan waktu lebih lama untuk merespons.
+ Parameter yang disediakan untuk suatu fungsi membutuhkan lebih banyak kompleksitas komputasi dalam fungsi, yang menyebabkan pemanggilan memakan waktu lebih lama.

Saat menguji aplikasi Anda, pastikan pengujian Anda secara akurat mencerminkan ukuran dan kuantitas data serta nilai parameter yang realistis. Pengujian sering menggunakan sampel kecil untuk kenyamanan, tetapi Anda harus menggunakan kumpulan data di batas atas dari apa yang diharapkan secara wajar untuk beban kerja Anda.

## Mengkonfigurasi batas waktu (konsol)
<a name="configuration-timeout-console"></a>

Anda dapat mengonfigurasi batas waktu fungsi di konsol Lambda.

**Untuk memodifikasi batas waktu untuk suatu fungsi**

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

1. Pilih fungsi.

1. Pilih tab **Konfigurasi** dan kemudian pilih **Konfigurasi umum**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/configuration-tab.png)

1. Di bagian **Konfigurasi umum**, pilih **Edit**.

1. Untuk **Timeout**, tetapkan nilai antara 1 dan 900 detik (15 menit).

1. Pilih **Simpan**.

## Mengkonfigurasi batas waktu ()AWS CLI
<a name="configuration-timeout-cli"></a>

Anda dapat menggunakan [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html)perintah untuk mengonfigurasi nilai batas waktu, dalam hitungan detik. Contoh perintah berikut meningkatkan batas waktu fungsi menjadi 120 detik (2 menit).

**Example**  

```
aws lambda update-function-configuration \
  --function-name my-function \
  --timeout 120
```

## Mengkonfigurasi batas waktu ()AWS SAM
<a name="configuration-timeout-sam"></a>

Anda dapat menggunakan [AWS Serverless Application Model](https://docs.aws.amazon.com//serverless-application-model/latest/developerguide/serverless-getting-started.html )untuk mengkonfigurasi nilai batas waktu untuk fungsi Anda. Perbarui properti [Timeout](https://docs.aws.amazon.com//serverless-application-model/latest/developerguide/sam-resource-function.html#sam-function-timeout) di `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
      # Other function properties...
```

# Konfigurasikan fungsi Lambda yang tahan lama
<a name="durable-configuration"></a>

Untuk mengaktifkan eksekusi tahan lama untuk fungsi Lambda Anda, Anda perlu mengonfigurasi pengaturan spesifik yang mengontrol berapa lama fungsi Anda dapat berjalan, berapa lama data status dipertahankan, dan izin apa yang diperlukan.

## Aktifkan eksekusi yang tahan lama
<a name="durable-config-settings"></a>

Untuk mengaktifkan eksekusi tahan lama untuk fungsi Lambda Anda, konfigurasikan `DurableConfig` konfigurasi fungsi Anda. Setelan ini mengontrol batas waktu eksekusi, retensi status, dan perilaku pembuatan versi.

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

```
aws lambda update-function-configuration \
  --function-name my-durable-function \
  --durable-config '{
    "ExecutionTimeout": 3600,
    "RetentionPeriodInDays": 30,
    "AllowInvokeLatest": true
  }'
```

------
#### [ CloudFormation ]

```
Resources:
  MyDurableFunction:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: my-durable-function
      Runtime: nodejs18.x
      Handler: index.handler
      Code:
        ZipFile: |
          // Your durable function code
      DurableConfig:
        ExecutionTimeout: 3600
        RetentionPeriodInDays: 30
        AllowInvokeLatest: true
```

------

**Parameter konfigurasi:**
+ `ExecutionTimeout`- Waktu eksekusi maksimum dalam hitungan detik (hingga 31.536.000 untuk satu tahun)
+ `RetentionPeriodInDays`- Berapa lama untuk mempertahankan status eksekusi dan riwayat (1-365 hari)
+ `AllowInvokeLatest`- Apakah akan mengizinkan pemanggilan versi \$1LATEST untuk eksekusi yang tahan lama

## Izin IAM untuk fungsi tahan lama
<a name="durable-iam-permissions"></a>

Fungsi tahan lama memerlukan izin IAM tambahan di luar peran eksekusi Lambda standar. Peran eksekusi fungsi Anda harus menyertakan izin untuk manajemen status dan eksekusi APIs tahan lama.

**Izin minimum yang diperlukan:**

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "lambda:InvokeFunction",
        "lambda:GetFunction",
        "lambda:ManageDurableState",
        "lambda:GetDurableExecution",
        "lambda:ListDurableExecutions"
      ],
      "Resource": "arn:aws:lambda:*:*:function:*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "arn:aws:logs:*:*:*"
    }
  ]
}
```

**CloudFormation contoh peran eksekusi:**

```
DurableFunctionRole:
  Type: AWS::IAM::Role
  Properties:
    AssumeRolePolicyDocument:
      Version: '2012-10-17'
      Statement:
        - Effect: Allow
          Principal:
            Service: lambda.amazonaws.com
          Action: sts:AssumeRole
    ManagedPolicyArns:
      - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
    Policies:
      - PolicyName: DurableFunctionPolicy
        PolicyDocument:
          Version: '2012-10-17'
          Statement:
            - Effect: Allow
              Action:
                - lambda:ManageDurableState
                - lambda:GetDurableExecution
                - lambda:ListDurableExecutions
              Resource: '*'
```

## Praktik terbaik konfigurasi
<a name="durable-config-best-practices"></a>

Ikuti praktik terbaik ini saat mengonfigurasi fungsi tahan lama untuk penggunaan produksi:
+ **Tetapkan batas waktu eksekusi yang sesuai** - Konfigurasikan `ExecutionTimeout` berdasarkan durasi maksimum yang diharapkan alur kerja Anda. Jangan menetapkan batas waktu lama yang tidak perlu karena memengaruhi alokasi biaya dan sumber daya.
+ **Retensi saldo dengan biaya penyimpanan** - Tetapkan `RetentionPeriodInDays` berdasarkan persyaratan debugging dan audit Anda. Periode retensi yang lebih lama meningkatkan biaya penyimpanan.
+ **Gunakan pembuatan versi dalam produksi** - Setel `AllowInvokeLatest` ke `false` lingkungan produksi dan gunakan versi fungsi atau alias tertentu untuk eksekusi yang tahan lama.
+ **Ukuran status monitor** - Objek status besar meningkatkan biaya penyimpanan dan dapat memengaruhi kinerja. Jaga status minimal dan gunakan penyimpanan eksternal untuk data besar.
+ **Konfigurasikan logging yang sesuai** - Aktifkan pencatatan terperinci untuk memecahkan masalah alur kerja yang berjalan lama, tetapi perhatikan volume dan biaya log.

**Contoh konfigurasi produksi:**

```
{
  "ExecutionTimeout": 86400,
  "RetentionPeriodInDays": 7,
  "AllowInvokeLatest": false
}
```

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

# Memberikan fungsi Lambda akses ke sumber daya di VPC Amazon
<a name="configuration-vpc"></a>

Dengan Amazon Virtual Private Cloud (Amazon VPC), Anda dapat membuat jaringan pribadi di sumber daya host Anda seperti Akun AWS instans Amazon Elastic Compute Cloud (Amazon EC2), instans Amazon Relational Database Service (Amazon RDS), dan instans Amazon. ElastiCache Anda dapat memberikan akses fungsi Lambda ke sumber daya yang dihosting di VPC Amazon dengan melampirkan fungsi Anda ke VPC melalui subnet pribadi yang berisi sumber daya. Ikuti petunjuk di bagian berikut untuk melampirkan fungsi Lambda ke VPC Amazon menggunakan konsol Lambda, (), atau. AWS Command Line Interface AWS CLI AWS SAM

**catatan**  
Setiap fungsi Lambda berjalan di dalam VPC yang dimiliki dan dikelola oleh layanan Lambda. Ini VPCs dikelola secara otomatis oleh Lambda dan tidak terlihat oleh pelanggan. Mengonfigurasi fungsi Anda untuk mengakses AWS sumber daya lain di VPC Amazon tidak berpengaruh pada VPC yang dikelola Lambda yang dijalankan fungsi Anda di dalamnya.

**Topics**
+ [Izin IAM yang diperlukan](#configuration-vpc-permissions)
+ [Melampirkan fungsi Lambda ke VPC Amazon di Akun AWS](#configuration-vpc-attaching)
+ [Akses internet saat dilampirkan ke VPC](#configuration-vpc-internet-access)
+ [IPv6 dukungan](#configuration-vpc-ipv6)
+ [Praktik terbaik untuk menggunakan Lambda dengan Amazon VPCs](#configuration-vpc-best-practice)
+ [Memahami Antarmuka Jaringan Elastis Hyperplane () ENIs](#configuration-vpc-enis)
+ [Menggunakan kunci syarat IAM untuk pengaturan VPC](#vpc-conditions)
+ [Tutorial VPC](#vpc-tutorials)

## Izin IAM yang diperlukan
<a name="configuration-vpc-permissions"></a>

Untuk melampirkan fungsi Lambda ke VPC Amazon di Anda, Akun AWS Lambda memerlukan izin untuk membuat dan mengelola antarmuka jaringan yang digunakannya untuk memberikan akses fungsi Anda ke sumber daya di VPC.

Antarmuka jaringan yang dibuat Lambda dikenal sebagai Hyperplane Elastic Network Interfaces, atau Hyperplane. ENIs Untuk mempelajari lebih lanjut tentang antarmuka jaringan ini, lihat[Memahami Antarmuka Jaringan Elastis Hyperplane () ENIs](#configuration-vpc-enis).

Anda dapat memberikan fungsi izin yang dibutuhkan dengan melampirkan kebijakan AWS terkelola [AWSLambdaVPCAccessExecutionRole](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaVPCAccessExecutionRole.html)ke peran eksekusi fungsi Anda. Saat Anda membuat fungsi baru di konsol Lambda dan melampirkannya ke VPC, Lambda secara otomatis menambahkan kebijakan izin ini untuk Anda.

Jika Anda lebih suka membuat kebijakan izin IAM Anda sendiri, pastikan untuk menambahkan semua izin berikut dan mengizinkannya di semua sumber daya (): `"Resource": "*"`
+ EC2: CreateNetworkInterface
+ EC2: DescribeNetworkInterfaces
+ EC2: DescribeSubnets
+ EC2: DeleteNetworkInterface
+ EC2: AssignPrivateIpAddresses
+ EC2: UnassignPrivateIpAddresses

Perhatikan bahwa peran fungsi Anda hanya memerlukan izin ini untuk membuat antarmuka jaringan, bukan untuk memanggil fungsi Anda. Anda masih dapat menjalankan fungsi dengan sukses saat dilampirkan ke VPC Amazon, meskipun Anda menghapus izin ini dari peran eksekusi fungsi Anda. 

Untuk melampirkan fungsi Anda ke VPC, Lambda juga perlu memverifikasi sumber daya jaringan menggunakan peran pengguna IAM Anda. Pastikan peran pengguna Anda memiliki izin IAM berikut:
+ **EC2: DescribeSecurityGroups**
+ **EC2: DescribeSubnets**
+ **EC2: DescribeVpcs**
+ **EC2: GetSecurityGroupsForVpc**

**catatan**  
Izin Amazon EC2 yang Anda berikan ke peran eksekusi fungsi Anda digunakan oleh layanan Lambda untuk melampirkan fungsi Anda ke VPC. Namun, Anda juga secara implisit memberikan izin ini ke kode fungsi Anda. Ini berarti bahwa kode fungsi Anda dapat membuat panggilan API Amazon EC2 ini. Untuk saran tentang mengikuti praktik terbaik keamanan, lihat[Praktik terbaik keamanan](#configuration-vpc-best-practice-security).

## Melampirkan fungsi Lambda ke VPC Amazon di Akun AWS
<a name="configuration-vpc-attaching"></a>

Lampirkan fungsi Anda ke VPC Amazon di Anda Akun AWS dengan menggunakan konsol Lambda, atau. AWS CLI AWS SAM Jika Anda menggunakan AWS CLI atau AWS SAM, atau melampirkan fungsi yang ada ke VPC menggunakan konsol Lambda, pastikan bahwa peran eksekusi fungsi Anda memiliki izin yang diperlukan yang tercantum di bagian sebelumnya.

Fungsi Lambda tidak dapat terhubung langsung ke VPC dengan [ tenancy instans khusus](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html). Untuk terhubung ke sumber daya dalam VPC khusus, [sambungkan ke VPC kedua dengan penyewaan default](https://aws.amazon.com/premiumsupport/knowledge-center/lambda-dedicated-vpc/).

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

**Untuk melampirkan fungsi ke VPC Amazon saat Anda membuatnya**

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) konsol Lambda dan pilih **Buat** fungsi.

1. Di bawah **Informasi Dasar**, untuk **Nama fungsi**, masukkan nama untuk fungsi Anda.

1. Konfigurasikan pengaturan VPC untuk fungsi dengan melakukan hal berikut:

   1. Perluas **Pengaturan lanjutan**.

   1. Pilih **Aktifkan VPC**, lalu pilih VPC yang ingin Anda lampirkan fungsinya.

   1. (Opsional) Untuk mengizinkan [ IPv6 lalu lintas keluar](#configuration-vpc-ipv6), pilih **Izinkan lalu IPv6 lintas untuk subnet dual-stack**.

   1. Pilih subnet dan grup keamanan untuk membuat antarmuka jaringan. Jika Anda memilih **Izinkan IPv6 lalu lintas untuk subnet dual-stack, semua subnet** yang dipilih harus memiliki blok CIDR dan blok IPv4 CIDR. IPv6 
**catatan**  
Untuk mengakses sumber daya privat, sambungkan fungsi Anda ke subnet privat. Jika fungsi Anda membutuhkan akses internet, lihat[Aktifkan akses internet untuk fungsi Lambda yang terhubung dengan VPC](configuration-vpc-internet.md). Menghubungkan fungsi ke subnet publik tidak memberikan akses internet atau alamat IP publik. 

1. Pilih **Buat fungsi**.

**Untuk melampirkan fungsi yang ada ke VPC Amazon**

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

1. Pilih tab **Konfigurasi**, lalu pilih **VPC**.

1. Pilih **Edit**.

1. Di bawah **VPC**, pilih VPC Amazon yang ingin Anda lampirkan fungsinya.

1. (Opsional) Untuk mengizinkan [ IPv6 lalu lintas keluar](#configuration-vpc-ipv6), pilih **Izinkan lalu IPv6 lintas untuk subnet dual-stack**. 

1. Pilih subnet dan grup keamanan untuk membuat antarmuka jaringan. Jika Anda memilih **Izinkan IPv6 lalu lintas untuk subnet dual-stack, semua subnet** yang dipilih harus memiliki blok CIDR dan blok IPv4 CIDR. IPv6 
**catatan**  
Untuk mengakses sumber daya privat, sambungkan fungsi Anda ke subnet privat. Jika fungsi Anda membutuhkan akses internet, lihat[Aktifkan akses internet untuk fungsi Lambda yang terhubung dengan VPC](configuration-vpc-internet.md). Menghubungkan fungsi ke subnet publik tidak memberikan akses internet atau alamat IP publik. 

1. Pilih **Simpan**.

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

**Untuk melampirkan fungsi ke VPC Amazon saat Anda membuatnya**
+ Untuk membuat fungsi Lambda dan melampirkannya ke VPC, jalankan perintah CLI berikut. `create-function`

  ```
  aws lambda create-function --function-name my-function \
  --runtime nodejs24.x --handler index.js --zip-file fileb://function.zip \
  --role arn:aws:iam::123456789012:role/lambda-role \
  --vpc-config Ipv6AllowedForDualStack=true,SubnetIds=subnet-071f712345678e7c8,subnet-07fd123456788a036,SecurityGroupIds=sg-085912345678492fb
  ```

  Tentukan subnet dan grup keamanan Anda sendiri dan atur `Ipv6AllowedForDualStack` ke `true` atau `false` sesuai dengan kasus penggunaan Anda.

**Untuk melampirkan fungsi yang ada ke VPC Amazon**
+ Untuk melampirkan fungsi yang ada ke VPC, jalankan perintah CLI berikut. `update-function-configuration`

  ```
  aws lambda update-function-configuration --function-name my-function \
  --vpc-config Ipv6AllowedForDualStack=true, SubnetIds=subnet-071f712345678e7c8,subnet-07fd123456788a036,SecurityGroupIds=sg-085912345678492fb
  ```

**Untuk melepaskan fungsi Anda dari VPC**
+ Untuk melepaskan fungsi Anda dari VPC, jalankan perintah `update-function-configuration` CLI berikut dengan daftar kosong subnet VPC dan grup keamanan.

  ```
  aws lambda update-function-configuration --function-name my-function \
  --vpc-config SubnetIds=[],SecurityGroupIds=[]
  ```

------
#### [ AWS SAM ]

**Untuk melampirkan fungsi Anda ke VPC**
+ Untuk melampirkan fungsi Lambda ke VPC Amazon, tambahkan `VpcConfig` properti ke definisi fungsi Anda seperti yang ditunjukkan pada contoh template berikut. Untuk informasi selengkapnya tentang properti ini, lihat [AWS: :Lambda: :Function VpcConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-vpcconfig.html) di *Panduan CloudFormation Pengguna* ( AWS SAM `VpcConfig`properti diteruskan langsung ke `VpcConfig` properti sumber daya). CloudFormation `AWS::Lambda::Function`

  ```
  AWSTemplateFormatVersion: '2010-09-09'
  Transform: AWS::Serverless-2016-10-31
  
  Resources:
    MyFunction:
      Type: AWS::Serverless::Function
      Properties:
        CodeUri: ./lambda_function/
        Handler: lambda_function.handler
        Runtime: python3.12
        VpcConfig:
          SecurityGroupIds:
            - !Ref MySecurityGroup
          SubnetIds:
            - !Ref MySubnet1
            - !Ref MySubnet2
        Policies:
          - AWSLambdaVPCAccessExecutionRole
  
    MySecurityGroup:
      Type: AWS::EC2::SecurityGroup
      Properties:
        GroupDescription: Security group for Lambda function
        VpcId: !Ref MyVPC
  
    MySubnet1:
      Type: AWS::EC2::Subnet
      Properties:
        VpcId: !Ref MyVPC
        CidrBlock: 10.0.1.0/24
  
    MySubnet2:
      Type: AWS::EC2::Subnet
      Properties:
        VpcId: !Ref MyVPC
        CidrBlock: 10.0.2.0/24
  
    MyVPC:
      Type: AWS::EC2::VPC
      Properties:
        CidrBlock: 10.0.0.0/16
  ```

  *Untuk informasi selengkapnya tentang mengonfigurasi VPC Anda, [AWS lihat: :EC2: :VPC AWS SAM](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html) di Panduan Pengguna.CloudFormation *

------

## Akses internet saat dilampirkan ke VPC
<a name="configuration-vpc-internet-access"></a>

Secara default, fungsi Lambda memiliki akses ke internet publik. Ketika Anda melampirkan fungsi Anda ke VPC, itu hanya dapat mengakses sumber daya yang tersedia dalam VPC itu. Untuk memberikan akses fungsi Anda ke internet, Anda juga perlu mengkonfigurasi VPC untuk memiliki akses internet. Untuk mempelajari selengkapnya, lihat [Aktifkan akses internet untuk fungsi Lambda yang terhubung dengan VPC](configuration-vpc-internet.md).

## IPv6 dukungan
<a name="configuration-vpc-ipv6"></a>

Fungsi Anda dapat terhubung ke sumber daya di subnet VPC dual-stack. IPv6 Opsi ini dimatikan secara default. Untuk mengizinkan IPv6 lalu lintas keluar, gunakan konsol atau `--vpc-config Ipv6AllowedForDualStack=true` opsi dengan fungsi atau [perintah buat. [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html)](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html)

**catatan**  
Untuk memungkinkan IPv6 lalu lintas keluar di VPC, semua subnet yang terhubung ke fungsi harus subnet dual-stack. Lambda tidak mendukung IPv6 koneksi keluar untuk subnet IPv6 -only di VPC atau koneksi IPv6 keluar untuk fungsi yang tidak terhubung ke VPC.

Anda dapat memperbarui kode fungsi Anda untuk secara eksplisit terhubung ke sumber daya subnet. IPv6 Contoh Python berikut membuka soket dan menghubungkan ke server. IPv6 

**Example — Connect ke IPv6 server**  

```
def connect_to_server(event, context):
    server_address = event['host']
    server_port = event['port']
    message = event['message']
    run_connect_to_server(server_address, server_port, message)

def run_connect_to_server(server_address, server_port, message):
    sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM, 0)
    try:
        # Send data
        sock.connect((server_address, int(server_port), 0, 0))
        sock.sendall(message.encode())
        BUFF_SIZE = 4096
        data = b''
        while True:
            segment = sock.recv(BUFF_SIZE)
            data += segment
            # Either 0 or end of data
            if len(segment) < BUFF_SIZE:
                break
        return data
    finally:
        sock.close()
```

## Praktik terbaik untuk menggunakan Lambda dengan Amazon VPCs
<a name="configuration-vpc-best-practice"></a>

Untuk memastikan bahwa konfigurasi VPC Lambda Anda memenuhi pedoman praktik terbaik, ikuti saran di bagian berikut.

### Praktik terbaik keamanan
<a name="configuration-vpc-best-practice-security"></a>

Untuk melampirkan fungsi Lambda Anda ke VPC, Anda harus memberikan peran eksekusi fungsi Anda sejumlah izin Amazon EC2. Izin ini diperlukan untuk membuat antarmuka jaringan yang digunakan fungsi Anda untuk mengakses sumber daya di VPC. Namun, izin ini juga secara implisit diberikan ke kode fungsi Anda. Ini berarti bahwa kode fungsi Anda memiliki izin untuk melakukan panggilan API Amazon EC2 ini.

Untuk mengikuti prinsip akses hak istimewa paling rendah, tambahkan kebijakan penolakan seperti contoh berikut ke peran eksekusi fungsi Anda. Kebijakan ini mencegah kode fungsi Anda melakukan panggilan ke Amazon EC2 APIs, sambil tetap mengizinkan layanan Lambda mengelola sumber daya VPC atas nama Anda. Kebijakan menggunakan kunci `lambda:SourceFunctionArn` kondisi, yang hanya berlaku untuk panggilan API yang dibuat oleh kode fungsi Anda selama eksekusi. Untuk informasi selengkapnya, lihat [Menggunakan fungsi sumber ARN untuk mengontrol perilaku akses fungsi](permissions-source-function-arn.md).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [ 
                 "ec2:CreateNetworkInterface",
                 "ec2:DeleteNetworkInterface",
                 "ec2:DescribeNetworkInterfaces",
                 "ec2:DescribeSubnets",
                 "ec2:DetachNetworkInterface",
                 "ec2:AssignPrivateIpAddresses",
                 "ec2:UnassignPrivateIpAddresses"
            ],
            "Resource": [ "*" ],
            "Condition": {
                "ArnEquals": {
                    "lambda:SourceFunctionArn": [
                        "arn:aws:lambda:us-west-2:123456789012:function:my_function"
                    ]
                }
            }
        }
    ]
}
```

------

AWS menyediakan *[grup keamanan](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)* dan *[Daftar Kontrol Akses jaringan (ACLs)](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)* untuk meningkatkan keamanan di VPC Anda. Grup keamanan mengontrol lalu lintas masuk dan keluar untuk sumber daya Anda, dan jaringan ACLs mengontrol lalu lintas masuk dan keluar untuk subnet Anda. Grup keamanan menyediakan kontrol akses yang cukup untuk sebagian besar subnet. Anda dapat menggunakan jaringan ACLs jika Anda menginginkan lapisan keamanan tambahan untuk VPC Anda. Untuk panduan umum tentang praktik terbaik keamanan saat menggunakan Amazon VPCs, lihat [Praktik terbaik keamanan untuk VPC Anda](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-best-practices.html) di *Panduan Pengguna Amazon Virtual Private Cloud*.

### Praktik terbaik kinerja
<a name="configuration-vpc-best-practice-performance"></a>

Ketika Anda melampirkan fungsi Anda ke VPC, Lambda memeriksa untuk melihat apakah ada sumber daya jaringan yang tersedia (Hyperplane ENI) yang dapat digunakan untuk terhubung. Hyperplane ENIs dikaitkan dengan kombinasi tertentu dari kelompok keamanan dan subnet VPC. Jika Anda telah melampirkan satu fungsi ke VPC, menentukan subnet dan grup keamanan yang sama saat Anda melampirkan fungsi lain berarti Lambda dapat berbagi sumber daya jaringan dan menghindari kebutuhan untuk membuat ENI Hyperplane baru. Untuk informasi selengkapnya tentang Hyperplane ENIs dan siklus hidupnya, lihat. [Memahami Antarmuka Jaringan Elastis Hyperplane () ENIs](#configuration-vpc-enis)

## Memahami Antarmuka Jaringan Elastis Hyperplane () ENIs
<a name="configuration-vpc-enis"></a>

Hyperplane ENI adalah sumber daya terkelola yang bertindak sebagai antarmuka jaringan antara fungsi Lambda Anda dan sumber daya yang Anda inginkan untuk terhubung ke fungsi Anda. Layanan Lambda membuat dan mengelola ini ENIs secara otomatis ketika Anda melampirkan fungsi Anda ke VPC.

Hyperplane ENIs tidak langsung terlihat oleh Anda, dan Anda tidak perlu mengkonfigurasi atau mengelolanya. Namun, mengetahui cara kerjanya dapat membantu Anda memahami perilaku fungsi Anda saat Anda melampirkannya ke VPC.

Pertama kali Anda melampirkan fungsi ke VPC menggunakan subnet tertentu dan kombinasi grup keamanan, Lambda membuat Hyperplane ENI. Fungsi lain di akun Anda yang menggunakan kombinasi subnet dan grup keamanan yang sama juga dapat menggunakan ENI ini. Jika memungkinkan, Lambda menggunakan kembali yang ada ENIs untuk mengoptimalkan pemanfaatan sumber daya dan meminimalkan pembuatan yang baru. ENIs Setiap Hyperplane ENI mendukung hingga 65.000 koneksi/port. Jika jumlah koneksi melebihi batas ini, Lambda menskalakan jumlah secara ENIs otomatis berdasarkan lalu lintas jaringan dan persyaratan konkurensi.

Untuk fungsi baru, saat Lambda membuat ENI Hyperplane, fungsi Anda tetap dalam status Pending dan Anda tidak dapat memanggilnya. Fungsi Anda beralih ke status Aktif hanya ketika Hyperplane ENI siap, yang dapat memakan waktu beberapa menit. Untuk fungsi yang ada, Anda tidak dapat melakukan operasi tambahan yang menargetkan fungsi, seperti membuat versi atau memperbarui kode fungsi, tetapi Anda dapat terus memanggil versi fungsi sebelumnya.

Sebagai bagian dari pengelolaan siklus hidup ENI, Lambda dapat menghapus dan membuat ulang ENIs untuk memuat lalu lintas jaringan keseimbangan di seluruh ENIs atau untuk mengatasi masalah yang ditemukan dalam pemeriksaan kesehatan ENI. Selain itu, jika fungsi Lambda tetap menganggur selama 14 hari, Lambda merebut kembali Hyperplane yang tidak digunakan dan menyetel status fungsi ke. ENIs `Inactive` Upaya pemanggilan berikutnya akan gagal, dan fungsi memasuki kembali status Pending hingga Lambda menyelesaikan pembuatan atau alokasi ENI Hyperplane. Kami menyarankan agar desain Anda tidak bergantung pada kegigihan. ENIs

Saat Anda memperbarui fungsi untuk menghapus konfigurasi VPC-nya, Lambda membutuhkan waktu hingga 20 menit untuk menghapus Hyperplane ENI yang terpasang. Lambda hanya menghapus ENI jika tidak ada fungsi lain (atau versi fungsi yang diterbitkan) yang menggunakan Hyperplane ENI itu. 

Lambda mengandalkan izin dalam [peran eksekusi](lambda-intro-execution-role.md) fungsi untuk menghapus ENI Hyperplane. Jika Anda menghapus peran eksekusi sebelum Lambda menghapus ENI Hyperplane, Lambda tidak akan dapat menghapus ENI Hyperplane. Anda dapat melakukan penghapusan secara manual.

## Menggunakan kunci syarat IAM untuk pengaturan VPC
<a name="vpc-conditions"></a>

Anda dapat menggunakan kunci syarat khusus Lambda untuk pengaturan VPC guna memberikan kontrol izin tambahan untuk fungsi Lambda Anda. Misalnya, Anda dapat meminta semua fungsi dalam organisasi Anda terhubung ke VPC. Anda juga dapat menentukan subnet dan grup keamanan yang dapat dan tidak dapat digunakan oleh pengguna fungsi.

Lambda mendukung kunci syarat berikut dalam kebijakan IAM:
+ **lambda: VpcIds** — Izinkan atau tolak satu atau lebih VPCs.
+ **lambda: SubnetIds** — Izinkan atau tolak satu atau lebih subnet.
+ **lambda: SecurityGroupIds** — Izinkan atau tolak satu atau lebih grup keamanan.

Operasi API Lambda [CreateFunction](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html) dan [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html) mendukung kunci kondisi ini. Untuk informasi selengkapnya tentang penggunaan kunci syarat dalam kebijakan IAM, lihat [elemen kebijakan IAM JSON: Syarat](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) di *Panduan Pengguna IAM*.

**Tip**  
Jika fungsi Anda sudah mencakup konfigurasi VPC dari permintaan API sebelumnya, Anda dapat mengirim permintaan `UpdateFunctionConfiguration` tanpa konfigurasi VPC.

### Contoh kebijakan dengan kunci syarat untuk pengaturan VPC
<a name="vpc-condition-examples"></a>

Contoh-contoh berikut ini menunjukkan cara menggunakan kunci syarat untuk pengaturan VPC. Setelah Anda membuat pernyataan kebijakan dengan batasan yang diinginkan, tambahkan pernyataan kebijakan untuk pengguna atau peran target.

#### Pastikan pengguna hanya men-deploy fungsi yang terhubung dengan VPC
<a name="vpc-condition-example-1"></a>

Untuk memastikan semua pengguna hanya men-deploy fungsi yang terhubung dengan VPC, Anda dapat menolak operasi pembuatan dan pembaruan fungsi yang tidak mencakup ID VPC yang valid. 

Perhatikan bahwa ID VPC bukan parameter input ke `CreateFunction` atau permintaan `UpdateFunctionConfiguration`. Lambda mengambil nilai ID VPC berdasarkan parameter subnet dan grup keamanan.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnforceVPCFunction",
      "Action": [
          "lambda:CreateFunction",
          "lambda:UpdateFunctionConfiguration"
       ],
      "Effect": "Deny",
      "Resource": "*",
      "Condition": {
        "Null": {
           "lambda:VpcIds": "true"
        }
      }
    }
  ]
}
```

------

#### Menolak akses pengguna ke grup tertentu VPCs, subnet, atau keamanan
<a name="vpc-condition-example-2"></a>

Untuk menolak akses pengguna ke spesifik VPCs, gunakan `StringEquals` untuk memeriksa nilai `lambda:VpcIds` kondisi. Contoh berikut menolak akses pengguna ke `vpc-1` dan `vpc-2`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EnforceOutOfVPC",
            "Action": [
                "lambda:CreateFunction",
                "lambda:UpdateFunctionConfiguration"
            ],
            "Effect": "Deny",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "lambda:VpcIds": [
                        "vpc-1",
                        "vpc-2"
                    ]
                }
            }
        }
    ]
}
```

------

Untuk menolak akses pengguna ke subnet tertentu, gunakan `StringEquals` untuk memeriksa nilai syarat `lambda:SubnetIds`. Contoh berikut menolak akses pengguna ke `subnet-1` dan `subnet-2`.

```
{
      "Sid": "EnforceOutOfSubnet",
      "Action": [
          "lambda:CreateFunction",
          "lambda:UpdateFunctionConfiguration"
       ],
      "Effect": "Deny",
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
            "lambda:SubnetIds": ["subnet-1", "subnet-2"]
        }
      }
    }
```

Untuk menolak akses pengguna ke grup keamanan tertentu, gunakan `StringEquals` untuk memeriksa nilai syarat `lambda:SecurityGroupIds`. Contoh berikut menolak akses pengguna ke `sg-1` dan `sg-2`.

```
{
      "Sid": "EnforceOutOfSecurityGroups",
      "Action": [
          "lambda:CreateFunction",
          "lambda:UpdateFunctionConfiguration"
       ],
      "Effect": "Deny",
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
            "lambda:SecurityGroupIds": ["sg-1", "sg-2"]
        }
      }
    }
  ]
}
```

#### Mengizinkan pengguna untuk membuat dan memperbarui fungsi dengan pengaturan VPC tertentu
<a name="vpc-condition-example-3"></a>

Untuk memungkinkan pengguna mengakses spesifik VPCs, gunakan `StringEquals` untuk memeriksa nilai `lambda:VpcIds` kondisi. Contoh berikut mengizinkan pengguna mengakses `vpc-1` dan `vpc-2`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EnforceStayInSpecificVpc",
            "Action": [
                "lambda:CreateFunction",
                "lambda:UpdateFunctionConfiguration"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "lambda:VpcIds": [
                        "vpc-1",
                        "vpc-2"
                    ]
                }
            }
        }
    ]
}
```

------

Untuk mengizinkan pengguna mengakses subnet tertentu, gunakan `StringEquals` untuk memeriksa nilai syarat `lambda:SubnetIds`. Contoh berikut mengizinkan pengguna mengakses `subnet-1` dan `subnet-2`.

```
{
      "Sid": "EnforceStayInSpecificSubnets",
      "Action": [
          "lambda:CreateFunction",
          "lambda:UpdateFunctionConfiguration"
       ],
      "Effect": "Allow",
      "Resource": "*",
      "Condition": {
        "ForAllValues:StringEquals": {
            "lambda:SubnetIds": ["subnet-1", "subnet-2"]
        }
      }
    }
```

Untuk mengizinkan pengguna mengakses grup keamanan tertentu, gunakan `StringEquals` untuk memeriksa nilai syarat `lambda:SecurityGroupIds`. Contoh berikut mengizinkan pengguna mengakses `sg-1` dan `sg-2`.

```
{
      "Sid": "EnforceStayInSpecificSecurityGroup",
      "Action": [
          "lambda:CreateFunction",
          "lambda:UpdateFunctionConfiguration"
       ],
      "Effect": "Allow",
      "Resource": "*",
      "Condition": {
        "ForAllValues:StringEquals": {
            "lambda:SecurityGroupIds": ["sg-1", "sg-2"]
        }
      }
    }
  ]
}
```

## Tutorial VPC
<a name="vpc-tutorials"></a>

Dalam tutorial berikut, Anda menghubungkan fungsi Lambda ke sumber daya di VPC Anda.
+ [Tutorial: Menggunakan fungsi Lambda untuk mengakses Amazon RDS di Amazon VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-lambda-tutorial.html)
+ [Tutorial: Mengonfigurasi fungsi Lambda untuk mengakses Amazon di ElastiCache VPC Amazon](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/LambdaRedis.html)

# Memberikan fungsi Lambda akses ke sumber daya di VPC Amazon di akun lain
<a name="configuration-vpc-cross-account"></a>

Anda dapat memberikan AWS Lambda fungsi Anda akses ke sumber daya di Amazon VPC di Amazon Virtual Private Cloud yang dikelola oleh akun lain, tanpa mengekspos VPC ke internet. Pola akses ini memungkinkan Anda untuk berbagi data dengan organisasi lain menggunakan AWS. Dengan menggunakan pola akses ini, Anda dapat berbagi data VPCs dengan tingkat keamanan dan kinerja yang lebih besar daripada melalui internet. Konfigurasikan fungsi Lambda Anda untuk menggunakan koneksi peering VPC Amazon untuk mengakses sumber daya ini.

**Awas**  
Bila Anda mengizinkan akses antar akun atau VPCs, periksa apakah paket Anda memenuhi persyaratan keamanan masing-masing organisasi yang mengelola akun ini. Mengikuti instruksi dalam dokumen ini akan memengaruhi postur keamanan sumber daya Anda.

Dalam tutorial ini, Anda menghubungkan dua akun bersama dengan koneksi peering menggunakan IPv4. Anda mengonfigurasi fungsi Lambda yang belum terhubung ke VPC Amazon. Anda mengonfigurasi resolusi DNS untuk menghubungkan fungsi Anda ke sumber daya yang tidak menyediakan statis IPs. Untuk menyesuaikan instruksi ini dengan skenario peering lainnya, lihat [VPC](https://docs.aws.amazon.com//vpc/latest/peering/what-is-vpc-peering.html) Peering Guide.

## Prasyarat
<a name="w2aac35c65b9"></a>

Untuk memberikan akses fungsi Lambda ke sumber daya di acccount lain, Anda harus memiliki:
+ Fungsi Lambda, dikonfigurasi untuk mengautentikasi dengan dan kemudian membaca dari sumber daya Anda.
+ Sumber daya di akun lain, seperti cluster Amazon RDS, tersedia melalui Amazon VPC.
+ Kredensil untuk akun fungsi Lambda Anda dan akun sumber daya Anda. Jika Anda tidak berwenang untuk menggunakan akun sumber daya Anda, hubungi pengguna yang berwenang untuk menyiapkan akun itu.
+ Izin untuk membuat dan memperbarui VPC (dan mendukung sumber daya Amazon VPC) untuk dikaitkan dengan fungsi Lambda Anda.
+ Izin untuk memperbarui peran eksekusi dan konfigurasi VPC untuk fungsi Lambda Anda.
+ Izin untuk membuat koneksi peering VPC di akun fungsi Lambda Anda.
+ Izin untuk menerima koneksi peering VPC di akun sumber daya Anda.
+ Izin untuk memperbarui konfigurasi VPC sumber daya Anda (dan mendukung sumber daya VPC Amazon).
+ Izin untuk menjalankan fungsi Lambda Anda.

## Buat VPC Amazon di akun fungsi Anda
<a name="w2aac35c65c11"></a>

Buat VPC Amazon, subnet, tabel rute, dan grup keamanan di akun fungsi Lambda Anda. 

**Untuk membuat VPC, subnet, dan sumber daya VPC lainnya menggunakan konsol**

1. Buka Konsol VPC Amazon di [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Di dasbor, pilih **Buat VPC**.

1. Untuk **blok IPv4 CIDR**, sediakan blok CIDR pribadi. Blok CIDR Anda tidak boleh tumpang tindih dengan blok yang digunakan dalam VPC sumber daya Anda. Jangan memilih blok yang digunakan VPC sumber daya Anda untuk IPs menetapkan sumber daya atau blok yang sudah ditentukan dalam tabel rute di VPC sumber daya Anda. Untuk informasi lebih lanjut tentang mendefinisikan blok CIDR yang sesuai, lihat blok [VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-cidr-blocks.html) CIDR.

1. Pilih **Sesuaikan AZs**.

1. Pilih yang AZs sama dengan sumber daya Anda.

1. Untuk **Jumlah subnet publik**, pilih **0**.

1. **Untuk **titik akhir VPC**, pilih Tidak Ada.**

1. Pilih **Buat VPC**.

## Berikan izin VPC ke peran eksekusi fungsi Anda
<a name="w2aac35c65c13"></a>

Lampirkan [AWSLambdaVPCAccessExecutionRole](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaVPCAccessExecutionRole.html)ke peran eksekusi fungsi Anda untuk memungkinkannya terhubung VPCs. 

**Untuk memberikan izin VPC ke peran eksekusi fungsi Anda**

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

1. Pilih nama fungsi Anda.

1. Pilih **Konfigurasi**.

1. Pilih **Izin**.

1. Di bawah **Nama peran**, pilih peran eksekusi.

1. Di bagian **Kebijakan izin**, pilih **Tambahkan izin**.

1. Dalam daftar dropdown, pilih **Lampirkan** kebijakan.

1. Dalam kotak pencarian, masukkan `AWSLambdaVPCAccessExecutionRole`.

1. Di sebelah kiri nama kebijakan, pilih kotak centang.

1. Pilih **Tambahkan izin**.

**Untuk melampirkan fungsi Anda ke VPC Amazon Anda**

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

1. Pilih nama fungsi Anda.

1. Pilih tab **Konfigurasi**, lalu pilih **VPC**.

1. Pilih **Edit**.

1. Di bawah **VPC**, pilih VPC

1. Di bawah **Subnet**, pilih subnet Anda.

1. Di bawah **Grup keamanan**, pilih grup keamanan default untuk VPC Anda.

1. Pilih **Simpan**.

## Buat permintaan koneksi peering VPC
<a name="w2aac35c65c17"></a>

Buat permintaan koneksi peering VPC dari VPC fungsi Anda (VPC pemohon) ke VPC sumber daya Anda (VPC penerima).

**Untuk meminta koneksi peering VPC dari VPC fungsi Anda**

1. Buka [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Di panel navigasi, pilih Koneksi **peering**.

1. Pilih **Buat koneksi peering**.

1. Untuk **ID VPC (Pemohon)**, pilih VPC fungsi Anda.

1. Untuk **ID Akun**, masukkan ID akun sumber daya Anda.

1. Untuk **ID VPC (Penerima)**, masukkan VPC sumber daya Anda.

## Siapkan akun sumber daya Anda
<a name="w2aac35c65c19"></a>

Untuk membuat koneksi peering Anda dan menyiapkan VPC sumber daya Anda untuk menggunakan koneksi, masuk ke akun sumber daya Anda dengan peran yang memegang izin yang tercantum dalam prasyarat. Langkah-langkah untuk masuk mungkin berbeda berdasarkan bagaimana akun diamankan. Untuk informasi selengkapnya tentang cara masuk ke AWS akun, lihat [Panduan Pengguna AWS Masuk](https://docs.aws.amazon.com//signin/latest/userguide/what-is-sign-in.html). Di akun sumber daya Anda, lakukan prosedur berikut.

**Untuk menerima permintaan koneksi peering VPC**

1. Buka [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Di panel navigasi, pilih Koneksi **peering**.

1. Pilih koneksi peering VPC yang tertunda (statusnya adalah penerimaan tertunda).

1. Pilih **Tindakan**

1. Dari daftar dropdown, pilih **Terima** permintaan.

1. Saat diminta konfirmasi, pilih **Terima permintaan**.

1. Pilih **Ubah tabel rute saya sekarang** untuk menambahkan rute ke tabel rute utama untuk VPC Anda sehingga Anda dapat mengirim dan menerima lalu lintas melintasi koneksi peering.

Periksa tabel rute untuk VPC sumber daya. Rute yang dihasilkan oleh Amazon VPC mungkin tidak membangun konektivitas, berdasarkan cara VPC sumber daya Anda diatur. Periksa konflik antara rute baru dan konfigurasi yang ada untuk VPC. Untuk informasi selengkapnya tentang pemecahan masalah, lihat [Memecahkan masalah koneksi peering VPC di Panduan Peering VPC](https://docs.aws.amazon.com/vpc/latest/peering/troubleshoot-vpc-peering-connections.html) *Amazon Virtual Private* Cloud.

**Untuk memperbarui grup keamanan untuk sumber daya Anda**

1. Buka [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Pada panel navigasi, pilih **Grup keamanan**.

1. Pilih grup keamanan untuk sumber daya Anda.

1. Pilih **Tindakan**.

1. Dari daftar dropdown, pilih **Edit aturan masuk**.

1. Pilih **Tambahkan aturan**.

1. Untuk **Sumber**, masukkan ID akun dan ID grup keamanan fungsi Anda, dipisahkan dengan garis miring (misalnya, 111122223333/sg-1a2b3c4d).

1. Pilih **Edit aturan keluar**.

1. Periksa apakah lalu lintas keluar dibatasi. Pengaturan VPC default memungkinkan semua lalu lintas keluar. Jika lalu lintas keluar dibatasi, lanjutkan ke langkah berikutnya.

1. Pilih **Tambahkan aturan**.

1. Untuk **Tujuan** masukkan ID akun dan ID grup keamanan fungsi Anda, dipisahkan dengan garis miring (misalnya, 111122223333/sg-1a2b3c4d).

1. Pilih **Simpan aturan**.

**Untuk mengaktifkan resolusi DNS untuk koneksi peering Anda**

1. Buka [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Di panel navigasi, pilih Koneksi **peering**.

1. Pilih koneksi peering Anda.

1. Pilih **Tindakan**.

1. Pilih **Edit pengaturan DNS**.

1. Di bawah **resolusi DNS Accepter**, pilih **Izinkan VPC pemohon untuk menyelesaikan DNS host VPC penerima ke** IP pribadi.

1. Pilih **Simpan perubahan**.

## Perbarui konfigurasi VPC di akun fungsi Anda
<a name="w2aac35c65c21"></a>

Masuk ke akun fungsi Anda, lalu perbarui konfigurasi VPC.

**Untuk menambahkan rute untuk koneksi peering VPC Anda**

1. Buka [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Di panel navigasi, pilih **Tabel rute**.

1. Pilih kotak centang di sebelah nama tabel rute untuk subnet yang terkait dengan fungsi Anda.

1. Pilih **Tindakan**.

1. Pilih **Edit rute**.

1. Pilih **Tambahkan rute**.

1. Untuk **Tujuan**, masukkan blok CIDR untuk VPC sumber daya Anda.

1. Untuk **Target**, pilih koneksi peering VPC Anda.

1. Pilih **Simpan perubahan**.

Untuk informasi lebih lanjut tentang pertimbangan yang mungkin Anda temui saat memperbarui tabel rute Anda, lihat [Perbarui tabel rute Anda untuk koneksi peering VPC](https://docs.aws.amazon.com//vpc/latest/peering/vpc-peering-routing.html).

**Untuk memperbarui grup keamanan untuk fungsi Lambda Anda**

1. Buka [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Pada panel navigasi, pilih **Grup keamanan**.

1. Pilih **Tindakan**.

1. Pilih **Edit aturan masuk**.

1. Pilih **Tambahkan aturan**.

1. Untuk **Sumber**, masukkan ID akun sumber daya dan ID grup keamanan Anda, dipisahkan dengan garis miring (misalnya, 111122223333/sg-1a2b3c4d).

1. Pilih **Simpan aturan**.

**Untuk mengaktifkan resolusi DNS untuk koneksi peering Anda**

1. Buka [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Di panel navigasi, pilih Koneksi **peering**.

1. Pilih koneksi peering Anda.

1. Pilih **Tindakan**.

1. Pilih **Edit pengaturan DNS**.

1. Di bawah **resolusi DNS Pemohon**, pilih **Izinkan VPC penerima untuk menyelesaikan DNS host VPC pemohon ke** IP pribadi.

1. Pilih **Simpan perubahan**.

## Uji fungsi Anda
<a name="w2aac35c65c23"></a>

**Untuk membuat acara pengujian dan memeriksa output fungsi Anda**

1. Di panel **Sumber kode**, pilih **Uji**.

1. Pilih **Buat acara baru**.

1. Di panel **Event JSON**, ganti nilai default dengan input yang sesuai untuk fungsi Lambda Anda.

1. Pilih **Panggil**.

1. Di tab **Hasil eksekusi**, konfirmasikan bahwa **Respons** berisi output yang Anda harapkan.

Selain itu, Anda dapat memeriksa log fungsi Anda untuk memverifikasi log seperti yang Anda harapkan.

**Untuk melihat catatan pemanggilan fungsi Anda di Log CloudWatch**

1. Pilih tab **Pantau**.

1. Pilih **Lihat CloudWatch log**.

1. Di tab **Log streams**, pilih aliran log untuk pemanggilan fungsi Anda.

1. Konfirmasikan log Anda seperti yang Anda harapkan.

# Aktifkan akses internet untuk fungsi Lambda yang terhubung dengan VPC
<a name="configuration-vpc-internet"></a>

Secara default, fungsi Lambda berjalan di VPC yang dikelola Lambda yang memiliki akses internet. Untuk mengakses sumber daya dalam VPC di akun Anda, Anda dapat menambahkan konfigurasi VPC ke suatu fungsi. Ini membatasi fungsi untuk sumber daya dalam VPC itu, kecuali VPC memiliki akses internet. Halaman ini menjelaskan cara menyediakan akses internet ke fungsi Lambda yang terhubung dengan VPC.

## Saya belum memiliki VPC
<a name="new-vpc"></a>

### Buat VPC
<a name="create-vpc-internet"></a>

**Alur kerja Buat VPC** menciptakan semua sumber daya VPC yang diperlukan untuk fungsi Lambda untuk mengakses internet publik dari subnet pribadi, termasuk subnet, gateway NAT, gateway internet, dan entri tabel rute.

**Untuk membuat VPC**

1. Buka konsol VPC Amazon di. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Di dasbor, pilih **Buat VPC**.

1. **Agar Sumber Daya dapat dibuat**, pilih **VPC dan lainnya**.

1. **Konfigurasikan VPC**

   1. Untuk **Pembuatan otomatis tanda nama**, masukkan nama untuk VPC.

   1. Untuk **blok IPv4 CIDR**, Anda dapat menyimpan saran default, atau sebagai alternatif Anda dapat memasukkan blok CIDR yang diperlukan oleh aplikasi atau jaringan Anda.

   1. Jika aplikasi Anda berkomunikasi dengan menggunakan IPv6 alamat, pilih blok CIDR, **blok IPv6 CIDR** yang disediakan **Amazon IPv6 **.

1. **Konfigurasikan subnet**

   1. Untuk **Jumlah Availability Zone**, pilih **2**. Kami merekomendasikan setidaknya dua AZs untuk ketersediaan tinggi.

   1. Untuk **Jumlah subnet publik**, pilih **2**.

   1. Untuk **Jumlah subnet pribadi**, pilih **2**.

   1. Anda dapat menyimpan blok CIDR default untuk subnet publik, atau sebagai alternatif Anda dapat memperluas **Kustomisasi blok CIDR subnet dan memasukkan blok CIDR**. Untuk informasi selengkapnya, lihat [Blok CIDR Subnet](https://docs.aws.amazon.com/vpc/latest/userguide/subnet-sizing.html).

1. Untuk **gateway NAT**, pilih **1 per AZ** untuk meningkatkan ketahanan.

1. Untuk **gateway internet Egress saja**, pilih **Ya** jika Anda memilih untuk menyertakan blok CIDR. IPv6 

1. Untuk **titik akhir VPC**, pertahankan default (**S3** Gateway). Tidak ada biaya untuk opsi ini. Untuk informasi selengkapnya, lihat [Jenis titik akhir VPC untuk Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#types-of-vpc-endpoints-for-s3).

1. Untuk **opsi DNS**, pertahankan pengaturan default.

1. Pilih **Buat VPC**.

### Konfigurasikan fungsi Lambda
<a name="vpc-function-internet-create"></a>

**Untuk mengonfigurasi VPC saat Anda membuat fungsi**

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

1. Pilih **Buat fungsi**.

1. Di bawah **Informasi Dasar**, untuk **Nama fungsi**, masukkan nama untuk fungsi Anda.

1. Perluas **Pengaturan lanjutan**.

1. Pilih **Aktifkan VPC**, lalu pilih VPC.

1. (Opsional) Untuk mengizinkan [ IPv6 lalu lintas keluar](configuration-vpc.md#configuration-vpc-ipv6), pilih **Izinkan lalu IPv6 lintas untuk subnet dual-stack**.

1. Untuk **Subnet**, pilih semua subnet pribadi. Subnet pribadi dapat mengakses internet melalui gateway NAT. Menghubungkan fungsi ke subnet publik tidak memberikan akses internet.
**catatan**  
Jika Anda memilih **Izinkan IPv6 lalu lintas untuk subnet dual-stack, semua subnet** yang dipilih harus memiliki blok CIDR dan blok IPv4 CIDR. IPv6 

1. Untuk **grup Keamanan**, pilih grup keamanan yang memungkinkan lalu lintas keluar.

1. Pilih **Buat fungsi**.

Lambda secara otomatis membuat peran eksekusi dengan kebijakan [AWSLambdaVPCAccessExecutionRole](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaVPCAccessExecutionRole.html) AWS terkelola. Izin dalam kebijakan ini hanya diperlukan untuk membuat antarmuka jaringan elastis untuk konfigurasi VPC, bukan untuk menjalankan fungsi Anda. Untuk menerapkan izin hak istimewa paling sedikit, Anda dapat menghapus **AWSLambdaVPCAccessExecutionRole**kebijakan dari peran eksekusi setelah membuat fungsi dan konfigurasi VPC. Untuk informasi selengkapnya, lihat [Izin IAM yang diperlukan](configuration-vpc.md#configuration-vpc-permissions).

**Untuk mengonfigurasi VPC untuk fungsi yang ada**

Untuk menambahkan konfigurasi VPC ke fungsi yang ada, peran eksekusi fungsi harus memiliki [izin untuk membuat dan mengelola antarmuka jaringan elastis](configuration-vpc.md#configuration-vpc-permissions). Kebijakan [AWSLambdaVPCAccessExecutionRole](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaVPCAccessExecutionRole.html) AWS terkelola mencakup izin yang diperlukan. Untuk menerapkan izin hak istimewa paling sedikit, Anda dapat menghapus **AWSLambdaVPCAccessExecutionRole**kebijakan dari peran eksekusi setelah membuat konfigurasi VPC.

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

1. Pilih fungsi.

1. Pilih tab **Konfigurasi**, lalu pilih **VPC**.

1. Di bagian **VPC**, pilih **Edit**.

1. Pilih VPC.

1. (Opsional) Untuk mengizinkan [ IPv6 lalu lintas keluar](configuration-vpc.md#configuration-vpc-ipv6), pilih **Izinkan lalu IPv6 lintas untuk subnet dual-stack**.

1. Untuk **Subnet**, pilih semua subnet pribadi. Subnet pribadi dapat mengakses internet melalui gateway NAT. Menghubungkan fungsi ke subnet publik tidak memberikan akses internet.
**catatan**  
Jika Anda memilih **Izinkan IPv6 lalu lintas untuk subnet dual-stack, semua subnet** yang dipilih harus memiliki blok CIDR dan blok IPv4 CIDR. IPv6 

1. Untuk **grup Keamanan**, pilih grup keamanan yang memungkinkan lalu lintas keluar.

1. Pilih **Simpan**.

### Uji fungsi
<a name="vpc-function-internet-test"></a>

Gunakan kode contoh berikut untuk mengonfirmasi bahwa fungsi Anda yang terhubung dengan VPC dapat menjangkau internet publik. Jika berhasil, kode mengembalikan kode `200` status. Jika tidak berhasil, fungsi akan habis.

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

1. **Di panel **Sumber kode** di konsol Lambda, tempel kode berikut ke dalam file index.mjs.** Fungsi ini membuat permintaan HTTP GET ke titik akhir publik dan mengembalikan kode respons HTTP untuk menguji apakah fungsi tersebut memiliki akses ke internet publik.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/code-source-nodejs.png)  
**Example — Permintaan HTTP dengan async/await**  

   ```
   const url = "https://aws.amazon.com/";
   
   export const handler = async(event) => {
       try {
           const res = await fetch(url);
           console.info("status", res.status);
           return res.status;
       }
       catch (e) {
           console.error(e);
           return 500;
       }
   };
   ```

1. Di bagian **DEPLOY**, pilih **Deploy** untuk memperbarui kode fungsi Anda:  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/getting-started-tutorial/deploy-console.png)

1. Pilih tab **Uji**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/test-tab.png)

1. Pilih **Uji**.

1. Fungsi mengembalikan kode `200` status. Ini berarti bahwa fungsi tersebut memiliki akses internet keluar.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/test-successful-200.png)

   Jika fungsi tidak dapat menjangkau internet publik, Anda mendapatkan pesan kesalahan seperti ini:

   ```
   {
     "errorMessage": "2024-04-11T17:22:20.857Z abe12jlc-640a-8157-0249-9be825c2y110 Task timed out after 3.01 seconds"
   }
   ```

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

1. **Di panel **Sumber kode** di konsol Lambda, tempel kode berikut ke dalam file lambda\$1function.py.** Fungsi ini membuat permintaan HTTP GET ke titik akhir publik dan mengembalikan kode respons HTTP untuk menguji apakah fungsi tersebut memiliki akses ke internet publik.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/code-source-python.png)

   ```
   import urllib.request
   
   def lambda_handler(event, context):
       try:
           response = urllib.request.urlopen('https://aws.amazon.com')
           status_code = response.getcode()
           print('Response Code:', status_code)
           return status_code
       except Exception as e:
           print('Error:', e)
           raise e
   ```

1. Di bagian **DEPLOY**, pilih **Deploy** untuk memperbarui kode fungsi Anda:  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/getting-started-tutorial/deploy-console.png)

1. Pilih tab **Uji**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/test-tab.png)

1. Pilih **Uji**.

1. Fungsi mengembalikan kode `200` status. Ini berarti bahwa fungsi tersebut memiliki akses internet keluar.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/test-successful-200.png)

   Jika fungsi tidak dapat menjangkau internet publik, Anda mendapatkan pesan kesalahan seperti ini:

   ```
   {
     "errorMessage": "2024-04-11T17:22:20.857Z abe12jlc-640a-8157-0249-9be825c2y110 Task timed out after 3.01 seconds"
   }
   ```

------

## Saya sudah memiliki VPC
<a name="existing-vpc"></a>

Jika Anda sudah memiliki VPC tetapi Anda perlu mengonfigurasi akses internet publik untuk fungsi Lambda, ikuti langkah-langkah ini. Prosedur ini mengasumsikan bahwa VPC Anda memiliki setidaknya dua subnet. Jika Anda tidak memiliki dua subnet, lihat [Membuat subnet di Panduan](https://docs.aws.amazon.com/vpc/latest/userguide/create-subnets.html) Pengguna Amazon *VPC*.

### Verifikasi konfigurasi tabel rute
<a name="vpc-internet-routes"></a>

1. Buka konsol VPC Amazon di. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Pilih ID **VPC**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/vpc-id.png)

1. Gulir ke bawah ke bagian **Peta sumber daya**. Perhatikan pemetaan tabel rute. Buka setiap tabel rute yang dipetakan ke subnet.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/route-table-associations.png)

1. Gulir ke bawah ke tab **Rute**. Tinjau rute untuk menentukan apakah VPC Anda memiliki kedua tabel rute berikut. Masing-masing persyaratan ini harus dipenuhi oleh tabel rute terpisah.
   + Lalu lintas internet (`0.0.0.0/0`untuk IPv4, `::/0` untuk IPv6) dirutekan ke gateway internet (). `igw-xxxxxxxxxx` Ini berarti bahwa subnet yang terkait dengan tabel rute adalah subnet publik.
**catatan**  
Jika subnet Anda tidak memiliki blok IPv6 CIDR, Anda hanya akan melihat IPv4 route ()`0.0.0.0/0`.  
**Example tabel rute subnet publik**    
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/routes-public.png)
   + Lalu lintas internet untuk IPv4 (`0.0.0.0/0`) dirutekan ke gateway NAT (`nat-xxxxxxxxxx`) yang terkait dengan subnet publik. Ini berarti bahwa subnet adalah subnet pribadi yang dapat mengakses internet melalui gateway NAT.
**catatan**  
Jika subnet Anda memiliki blok IPv6 CIDR, tabel rute juga harus merutekan IPv6 lalu lintas terikat internet (`::/0`) ke gateway internet khusus egres (). `eigw-xxxxxxxxxx` Jika subnet Anda tidak memiliki blok IPv6 CIDR, Anda hanya akan melihat IPv4 route ()`0.0.0.0/0`.  
**Example tabel rute subnet pribadi**    
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/routes-private.png)

1. Ulangi langkah sebelumnya hingga Anda meninjau setiap tabel rute yang terkait dengan subnet di VPC Anda dan mengonfirmasi bahwa Anda memiliki tabel rute dengan gateway internet dan tabel rute dengan gateway NAT.

   Jika Anda tidak memiliki dua tabel rute, satu dengan rute ke gateway internet dan satu dengan rute ke gateway NAT, ikuti langkah-langkah ini untuk membuat sumber daya dan entri tabel rute yang hilang.

### Membuat tabel rute
<a name="create-route-table"></a>

Ikuti langkah-langkah ini untuk membuat tabel rute dan mengaitkannya dengan subnet.

**Untuk membuat tabel rute khusus menggunakan konsol Amazon VPC**

1. Buka konsol VPC Amazon di. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Di panel navigasi, pilih **Tabel rute**.

1. Pilih **Buat tabel rute**.

1. (Opsional) Untuk **Nama**, masukkan nama untuk tabel rute Anda. 

1. Untuk **VPC**, pilih VPC Anda. 

1. (Opsional) Untuk menambahkan tag, pilih **Tambahkan tag baru** dan masukkan kunci tag dan nilai tag.

1. Pilih **Buat tabel rute**.

1. Pada tab **Pengaitan subnet**, pilih **Sunting pengaitan subnet**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/route-table-subnet.png)

1. Pilih kotak centang untuk subnet untuk dikaitkan dengan tabel rute.

1. Pilih **Simpan pengaitan**.

### Membuat gateway internet baru
<a name="create-igw"></a>

Ikuti langkah-langkah ini untuk membuat gateway internet, melampirkannya ke VPC Anda, dan menambahkannya ke tabel rute subnet publik Anda.

**Untuk membuat gateway internet**

1. Buka konsol VPC Amazon di. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Di panel navigasi, pilih **gateway Internet**.

1. Pilih **Buat gateway internet**.

1. (Opsional) Masukkan nama untuk gateway internet Anda.

1. (Opsional) Untuk menambahkan tag, pilih **Tambahkan tag baru** dan masukkan kunci tag dan nilai.

1. Pilih **Buat gateway internet**.

1. **Pilih **Lampirkan ke VPC** dari spanduk di bagian atas layar, pilih VPC yang tersedia, lalu pilih Lampirkan gateway internet.**  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/igw-attach-vpc.png)

1. Pilih ID **VPC**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/igw-subnet-1.png)

1. Pilih **ID VPC** lagi untuk membuka halaman detail VPC.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/igw-your-vpcs.png)

1. Gulir ke bawah ke bagian **Peta sumber daya** dan kemudian pilih subnet. Detail subnet ditampilkan di tab baru.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/vpc-subnets.png)

1. Pilih tautan di bawah **Tabel rute**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/subnet-route-table.png)

1. Pilih **ID tabel Route** untuk membuka halaman detail tabel rute.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/route-table-id.png)

1. Di bawah **Rute**, pilih **Edit rute**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/edit-routes.png)

1. Pilih **Tambah rute**, lalu masukkan `0.0.0.0/0` di kotak **Tujuan**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/create-route-1.png)

1. Untuk **Target**, pilih **Internet gateway**, lalu pilih gateway internet yang Anda buat sebelumnya. Jika subnet Anda memiliki blok IPv6 CIDR, Anda juga harus menambahkan rute `::/0` ke gateway internet yang sama.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/create-route-2.png)

1. Pilih **Simpan perubahan**.

### Buat gateway NAT
<a name="create-nat-gateway"></a>

Ikuti langkah-langkah ini untuk membuat gateway NAT, mengaitkannya dengan subnet publik, dan kemudian menambahkannya ke tabel rute subnet pribadi Anda.

**Untuk membuat gateway NAT dan mengaitkannya dengan subnet publik**

1. Di panel navigasi, pilih gateway **NAT**.

1. Pilih **Buat gateway NAT**.

1. (Opsional) Masukkan nama untuk gateway NAT Anda.

1. Untuk **Subnet**, pilih subnet publik di VPC Anda. (Subnet publik adalah subnet yang memiliki rute langsung ke gateway internet dalam tabel rutenya.)
**catatan**  
Gateway NAT dikaitkan dengan subnet publik, tetapi entri tabel rute ada di subnet pribadi.

1. Untuk **ID alokasi IP elastis**, pilih alamat IP elastis atau pilih **Alokasikan IP Elastis**.

1. Pilih **Buat gateway NAT**.

**Untuk menambahkan rute ke gateway NAT di tabel rute subnet pribadi**

1. Di panel navigasi, pilih **Pengguna**.

1. Pilih subnet pribadi di VPC Anda. (Subnet pribadi adalah subnet yang tidak memiliki rute ke gateway internet di tabel rutenya.)

1. Pilih tautan di bawah **Tabel rute**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/subnet-route-table.png)

1. Pilih **ID tabel Route** untuk membuka halaman detail tabel rute.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/route-table-id.png)

1. Gulir ke bawah dan pilih tab **Rute**, lalu pilih **Edit rute**  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/route-table-edit-routes.png)

1. Pilih **Tambah rute**, lalu masukkan `0.0.0.0/0` di kotak **Tujuan**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/create-route-1.png)

1. Untuk **Target**, pilih **gateway NAT**, lalu pilih gateway NAT yang Anda buat sebelumnya.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/create-route-nat.png)

1. Pilih **Simpan perubahan**.

### Buat gateway internet khusus egress (hanya) IPv6
<a name="create-egress-gateway"></a>

Ikuti langkah-langkah ini untuk membuat gateway internet khusus egres dan menambahkannya ke tabel rute subnet pribadi Anda.

**Untuk membuat gateway internet egress-only**

1. Di panel navigasi, pilih gateway internet khusus **Egress.**

1. Pilih **Buat gateway internet hanya jalan keluar**.

1. (Opsional) Masukkan nama.

1. Pilih VPC tempat untuk membuat gateway internet egress-only. 

1. Pilih **Buat gateway internet hanya jalan keluar**.

1. Pilih tautan di bawah ID **VPC Terlampir**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/eigw-details.png)

1. Pilih tautan di bawah **ID VPC** untuk membuka halaman detail VPC.

1. Gulir ke bawah ke bagian **Peta sumber daya** dan kemudian pilih subnet pribadi. (Subnet pribadi adalah subnet yang tidak memiliki rute ke gateway internet di tabel rutenya.) Detail subnet ditampilkan di tab baru.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/vpc-subnet-private.png)

1. Pilih tautan di bawah **Tabel rute**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/private-subnet-route-table.png)

1. Pilih **ID tabel Route** untuk membuka halaman detail tabel rute.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/route-table-id.png)

1. Di bawah **Rute**, pilih **Edit rute**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/edit-routes.png)

1. Pilih **Tambah rute**, lalu masukkan `::/0` di kotak **Tujuan**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/create-route-1.png)

1. Untuk **Target**, pilih **Egress Only Internet Gateway**, lalu pilih gateway yang Anda buat sebelumnya.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/eigw-route.png)

1. Pilih **Simpan perubahan**.

### Konfigurasikan fungsi Lambda
<a name="vpc-function-internet-create-existing"></a>

**Untuk mengonfigurasi VPC saat Anda membuat fungsi**

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

1. Pilih **Buat fungsi**.

1. Di bawah **Informasi Dasar**, untuk **Nama fungsi**, masukkan nama untuk fungsi Anda.

1. Perluas **Pengaturan lanjutan**.

1. Pilih **Aktifkan VPC**, lalu pilih VPC.

1. (Opsional) Untuk mengizinkan [ IPv6 lalu lintas keluar](configuration-vpc.md#configuration-vpc-ipv6), pilih **Izinkan lalu IPv6 lintas untuk subnet dual-stack**.

1. Untuk **Subnet**, pilih semua subnet pribadi. Subnet pribadi dapat mengakses internet melalui gateway NAT. Menghubungkan fungsi ke subnet publik tidak memberikan akses internet.
**catatan**  
Jika Anda memilih **Izinkan IPv6 lalu lintas untuk subnet dual-stack, semua subnet** yang dipilih harus memiliki blok CIDR dan blok IPv4 CIDR. IPv6 

1. Untuk **grup Keamanan**, pilih grup keamanan yang memungkinkan lalu lintas keluar.

1. Pilih **Buat fungsi**.

Lambda secara otomatis membuat peran eksekusi dengan kebijakan [AWSLambdaVPCAccessExecutionRole](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaVPCAccessExecutionRole.html) AWS terkelola. Izin dalam kebijakan ini hanya diperlukan untuk membuat antarmuka jaringan elastis untuk konfigurasi VPC, bukan untuk menjalankan fungsi Anda. Untuk menerapkan izin hak istimewa paling sedikit, Anda dapat menghapus **AWSLambdaVPCAccessExecutionRole**kebijakan dari peran eksekusi setelah membuat fungsi dan konfigurasi VPC. Untuk informasi selengkapnya, lihat [Izin IAM yang diperlukan](configuration-vpc.md#configuration-vpc-permissions).

**Untuk mengonfigurasi VPC untuk fungsi yang ada**

Untuk menambahkan konfigurasi VPC ke fungsi yang ada, peran eksekusi fungsi harus memiliki [izin untuk membuat dan mengelola antarmuka jaringan elastis](configuration-vpc.md#configuration-vpc-permissions). Kebijakan [AWSLambdaVPCAccessExecutionRole](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaVPCAccessExecutionRole.html) AWS terkelola mencakup izin yang diperlukan. Untuk menerapkan izin hak istimewa paling sedikit, Anda dapat menghapus **AWSLambdaVPCAccessExecutionRole**kebijakan dari peran eksekusi setelah membuat konfigurasi VPC.

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

1. Pilih fungsi.

1. Pilih tab **Konfigurasi**, lalu pilih **VPC**.

1. Di bagian **VPC**, pilih **Edit**.

1. Pilih VPC.

1. (Opsional) Untuk mengizinkan [ IPv6 lalu lintas keluar](configuration-vpc.md#configuration-vpc-ipv6), pilih **Izinkan lalu IPv6 lintas untuk subnet dual-stack**.

1. Untuk **Subnet**, pilih semua subnet pribadi. Subnet pribadi dapat mengakses internet melalui gateway NAT. Menghubungkan fungsi ke subnet publik tidak memberikan akses internet.
**catatan**  
Jika Anda memilih **Izinkan IPv6 lalu lintas untuk subnet dual-stack, semua subnet** yang dipilih harus memiliki blok CIDR dan blok IPv4 CIDR. IPv6 

1. Untuk **grup Keamanan**, pilih grup keamanan yang memungkinkan lalu lintas keluar.

1. Pilih **Simpan**.

### Uji fungsi
<a name="vpc-function-internet-test-existing"></a>

Gunakan kode contoh berikut untuk mengonfirmasi bahwa fungsi Anda yang terhubung dengan VPC dapat menjangkau internet publik. Jika berhasil, kode mengembalikan kode `200` status. Jika tidak berhasil, fungsi akan habis.

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

1. **Di panel **Sumber kode** di konsol Lambda, tempel kode berikut ke dalam file index.mjs.** Fungsi ini membuat permintaan HTTP GET ke titik akhir publik dan mengembalikan kode respons HTTP untuk menguji apakah fungsi tersebut memiliki akses ke internet publik.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/code-source-nodejs.png)  
**Example — Permintaan HTTP dengan async/await**  

   ```
   const url = "https://aws.amazon.com/";
   
   export const handler = async(event) => {
       try {
           const res = await fetch(url);
           console.info("status", res.status);
           return res.status;
       }
       catch (e) {
           console.error(e);
           return 500;
       }
   };
   ```

1. Di bagian **DEPLOY**, pilih **Deploy** untuk memperbarui kode fungsi Anda:  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/getting-started-tutorial/deploy-console.png)

1. Pilih tab **Uji**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/test-tab.png)

1. Pilih **Uji**.

1. Fungsi mengembalikan kode `200` status. Ini berarti bahwa fungsi tersebut memiliki akses internet keluar.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/test-successful-200.png)

   Jika fungsi tidak dapat menjangkau internet publik, Anda mendapatkan pesan kesalahan seperti ini:

   ```
   {
     "errorMessage": "2024-04-11T17:22:20.857Z abe12jlc-640a-8157-0249-9be825c2y110 Task timed out after 3.01 seconds"
   }
   ```

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

1. **Di panel **Sumber kode** di konsol Lambda, tempel kode berikut ke dalam file lambda\$1function.py.** Fungsi ini membuat permintaan HTTP GET ke titik akhir publik dan mengembalikan kode respons HTTP untuk menguji apakah fungsi tersebut memiliki akses ke internet publik.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/code-source-python.png)

   ```
   import urllib.request
   
   def lambda_handler(event, context):
       try:
           response = urllib.request.urlopen('https://aws.amazon.com')
           status_code = response.getcode()
           print('Response Code:', status_code)
           return status_code
       except Exception as e:
           print('Error:', e)
           raise e
   ```

1. Di bagian **DEPLOY**, pilih **Deploy** untuk memperbarui kode fungsi Anda:  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/getting-started-tutorial/deploy-console.png)

1. Pilih tab **Uji**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/test-tab.png)

1. Pilih **Uji**.

1. Fungsi mengembalikan kode `200` status. Ini berarti bahwa fungsi tersebut memiliki akses internet keluar.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/test-successful-200.png)

   Jika fungsi tidak dapat menjangkau internet publik, Anda mendapatkan pesan kesalahan seperti ini:

   ```
   {
     "errorMessage": "2024-04-11T17:22:20.857Z abe12jlc-640a-8157-0249-9be825c2y110 Task timed out after 3.01 seconds"
   }
   ```

------

# Menghubungkan titik akhir VPC antarmuka masuk untuk Lambda
<a name="configuration-vpc-endpoints"></a>

Jika Anda menggunakan Amazon Virtual Private Cloud (Amazon VPC) untuk meng-host AWS sumber daya Anda, Anda dapat membuat koneksi antara VPC dan Lambda. Anda dapat menggunakan koneksi ini untuk mengaktifkan fungsi Lambda Anda tanpa menyeberangi internet publik.

Untuk membangun koneksi privat antara VPC Anda dan Lambda, buat [VPC endpoint antarmuka](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html). Endpoint antarmuka didukung oleh [AWS PrivateLink](https://aws.amazon.com/privatelink), yang memungkinkan Anda mengakses Lambda secara pribadi APIs tanpa gateway internet, perangkat NAT, koneksi VPN, atau koneksi. AWS Direct Connect Instans di VPC Anda tidak memerlukan alamat IP publik untuk berkomunikasi dengan Lambda. APIs Lalu lintas antara VPC Anda dan Lambda tidak meninggalkan jaringan AWS .

Setiap titik akhir antarmuka diwakili oleh satu atau lebih [antarmuka jaringan elastis](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html) dalam subnet Anda. Antarmuka jaringan menyediakan alamat IP privat yang berfungsi sebagai titik masuk untuk lalu lintas ke Lambda.

**Topics**
+ [Pertimbangan untuk titik akhir antarmuka Lambda](#vpc-endpoint-considerations)
+ [Membuat titik akhir antarmuka untuk Lambda](#vpc-endpoint-create)
+ [Membuat kebijakan titik akhir antarmuka untuk Lambda](#vpc-endpoint-policy)

## Pertimbangan untuk titik akhir antarmuka Lambda
<a name="vpc-endpoint-considerations"></a>

Sebelum Anda mengatur titik akhir antarmuka untuk Lambda, pastikan untuk meninjau [Properti dan batasan titik akhir antarmuka](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#vpce-interface-limitations) dalam *Panduan Pengguna Amazon VPC*.

Anda dapat memanggil salah satu operasi API Lambda dari VPC Anda. Misalnya, Anda dapat mengaktifkan fungsi Lambda dengan memanggil API `Invoke` dari VPC Anda. Untuk daftar lengkap Lambda APIs, lihat [Tindakan](https://docs.aws.amazon.com/lambda/latest/dg/API_Operations.html) dalam referensi API Lambda.

`use1-az3`adalah Wilayah kapasitas terbatas untuk fungsi VPC Lambda. Anda tidak boleh menggunakan subnet di zona ketersediaan ini dengan fungsi Lambda Anda karena ini dapat mengakibatkan pengurangan redundansi zona jika terjadi pemadaman.

### Tetap aktif untuk koneksi yang persisten
<a name="vpc-endpoint-considerations-keepalive"></a>

Lambda menghapus koneksi idle dari waktu ke waktu, jadi Anda harus menggunakan arahan yang tetap aktif untuk mempertahankan koneksi yang persisten. Mencoba menggunakan kembali koneksi idle saat mengaktifkan fungsi akan menyebabkan kesalahan koneksi. Untuk mempertahankan koneksi yang persisten, gunakan arahan tetap aktif yang berkaitan dengan runtime Anda. Sebagai contoh, lihat [Menggunakan Kembali Koneksi Tetap Aktif di Node.js](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-reusing-connections.html) dalam *AWS SDK untuk JavaScript Panduan Developer*.

### Pertimbangan Tagihan
<a name="vpc-endpoint-considerations-billing"></a>

Tidak ada biaya tambahan untuk mengakses fungsi Lambda melalui titik akhir antarmuka. Untuk informasi selengkapnya tentang harga Lambda, lihat [AWS Lambda Harga](https://aws.amazon.com/lambda/pricing/).

Harga standar untuk AWS PrivateLink berlaku untuk titik akhir antarmuka untuk Lambda. AWS Akun Anda ditagih untuk setiap jam, titik akhir antarmuka disediakan di setiap Availability Zone dan untuk data yang diproses melalui titik akhir antarmuka. Untuk informasi selengkapnya tentang harga titik akhir antarmuka, lihat [AWS PrivateLink harga](https://aws.amazon.com/privatelink/pricing/).

### Pertimbangan Peering VPC
<a name="vpc-endpoint-considerations-peering"></a>

[Anda dapat menghubungkan yang lain VPCs ke VPC dengan titik akhir antarmuka menggunakan peering VPC.](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) VPC peering adalah koneksi jaringan antara dua. VPCs Anda dapat membuat koneksi peering VPC antara keduanya VPCs, atau dengan VPC di akun lain. AWS VPCs Bisa juga di dua AWS wilayah yang berbeda.

Lalu lintas antara peered VPCs tetap di AWS jaringan dan tidak melintasi internet publik. Setelah VPCs di-peer, sumber daya seperti instans Amazon Elastic Compute Cloud (Amazon EC2), instans Amazon Relational Database Service (Amazon RDS), atau fungsi Lambda berkemampuan VPC di keduanya VPCs dapat mengakses Lambda API melalui titik akhir antarmuka yang dibuat di salah satu. VPCs

## Membuat titik akhir antarmuka untuk Lambda
<a name="vpc-endpoint-create"></a>

Anda dapat membuat titik akhir antarmuka untuk Lambda menggunakan konsol VPC Amazon atau (). AWS Command Line Interface AWS CLI Untuk informasi selengkapnya, lihat [Membuat titik akhir antarmuka](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#create-interface-endpoint) dalam *Panduan Pengguna Amazon VPC*.

**Untuk membuat titik akhir antarmuka untuk Lambda (konsol)**

1. Buka [Halaman titik akhir](https://console.aws.amazon.com/vpc/home?#Endpoints) konsol Amazon VPC.

1. Pilih **Buat Titik Akhir**.

1. Untuk **kategori Layanan**, verifikasi **Layanan AWS**apakah yang dipilih.

1. Untuk **Nama Layanan**, pilih **com.amazonaws. *region*.lambda**. Verifikasi bahwa **Jenis** adalah **Antarmuka**.

1. Pilih VPC dan subnet.

1. Untuk mengaktifkan DNS privat untuk titik akhir antarmuka, pilih kotak centang **Aktifkan Nama DNS**. Kami menyarankan Anda mengaktifkan nama DNS pribadi untuk titik akhir VPC Anda. Layanan AWS Ini memastikan bahwa permintaan yang menggunakan titik akhir layanan publik, seperti permintaan yang dibuat melalui AWS SDK, diselesaikan ke titik akhir VPC Anda.

1. Untuk **Grup keamanan**, pilih satu grup keamanan atau lebih.

1. Pilih **Buat titik akhir**.

Untuk menggunakan opsi DNS privat, Anda harus mengatur `enableDnsHostnames` dan `enableDnsSupportattributes` VPC Anda. Untuk informasi selengkapnya, lihat [Melihat dan memperbarui dukungan DNS untuk VPC Anda](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating) di *Panduan Pengguna Amazon VPC*. Jika Anda mengaktifkan DNS privat untuk titik akhir antarmuka, Anda dapat membuat permintaan API untuk Lambda menggunakan nama DNS default untuk Wilayah, misalnya `lambda.us-east-1.amazonaws.com`. Untuk titik akhir layanan lainnya, lihat [Titik akhir layanan dan kuota](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) di. *Referensi Umum AWS*

Untuk informasi selengkapnya, lihat [Mengakses layanan melalui titik akhir antarmuka](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#access-service-though-endpoint) dalam *Panduan Pengguna Amazon VPC*.

Untuk informasi tentang membuat dan mengonfigurasi titik akhir menggunakan CloudFormation, lihat VPCEndpoint sumber daya [AWS:EC2::](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html) di *AWS CloudFormation Panduan Pengguna*.

**Untuk membuat titik akhir antarmuka untuk Lambda (AWS CLI)**  
Gunakan perintah [create-vpc-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/create-vpc-endpoint.html) dan tentukan ID VPC, tipe VPC endpoint (antarmuka), nama layanan, subnet yang akan menggunakan titik akhir, dan grup keamanan yang dikaitkan dengan antarmuka jaringan titik akhir. Sebagai contoh:

```
aws ec2 create-vpc-endpoint 
  --vpc-id vpc-ec43eb89
  --vpc-endpoint-type Interface
  --service-name com.amazonaws.us-east-1.lambda
  --subnet-id subnet-abababab
  --security-group-id sg-1a2b3c4d
```

## Membuat kebijakan titik akhir antarmuka untuk Lambda
<a name="vpc-endpoint-policy"></a>

Untuk mengontrol siapa yang dapat menggunakan titik akhir antarmuka Anda dan fungsi Lambda mana yang dapat diakses pengguna, Anda dapat melampirkan kebijakan titik akhir ke titik akhir Anda. Kebijakan menentukan informasi berikut ini:
+ Prinsip yang dapat melakukan tindakan.
+ Tindakan yang dapat dilakukan oleh prinsip.
+ Sumber daya yang dapat digunakan untuk melakukan tindakan.

Untuk informasi selengkapnya, lihat [Mengontrol akses ke layanan dengan VPC endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html) dalam *Panduan Pengguna Amazon VPC*.

**Kebijakan titik akhir antarmuka untuk tindakan Lambda**  
Berikut adalah contoh kebijakan titik akhir untuk Lambda. Jika dilampirkan ke titik akhir, kebijakan ini memungkinkan `MyUser` pengguna untuk mengaktifkan fungsi `my-function`.

**catatan**  
Anda perlu memasukkan ARN fungsi yang memenuhi syarat dan tidak memenuhi syarat dalam sumber daya.

```
{
   "Statement":[
      {
         "Principal":
         { 
             "AWS": "arn:aws:iam::111122223333:user/MyUser" 
         },
         "Effect":"Allow",
         "Action":[
            "lambda:InvokeFunction"
         ],
         "Resource": [
               "arn:aws:lambda:us-east-2:123456789012:function:my-function",
               "arn:aws:lambda:us-east-2:123456789012:function:my-function:*"
            ]
      }
   ]
}
```

# Mengonfigurasi akses sistem file untuk fungsi Lambda
<a name="configuration-filesystem"></a>

Anda dapat mengonfigurasikan fungsi untuk memasang sistem file Amazon Elastic File System (Amazon EFS) ke direktori lokal. Dengan Amazon EFS, kode fungsi Anda dapat mengakses dan memodifikasi sumber daya bersama dengan aman dan dengan konkurensi tinggi.

## Wilayah yang Didukung
<a name="configuration-filesystem-supported-regions"></a>

Amazon EFS untuk Lambda tersedia di semua [Wilayah komersial](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#region) kecuali Asia Pasifik (Selandia Baru), Asia Pasifik (Taipei), Asia Pasifik (Malaysia), Meksiko (Tengah), Asia Pasifik (Thailand), dan Kanada Barat (Calgary).

**Topics**
+ [Wilayah yang Didukung](#configuration-filesystem-supported-regions)
+ [Peran eksekusi dan izin pengguna](#configuration-filesystem-permissions)
+ [Mengonfigurasi sistem file dan titik akses](#configuration-filesystem-setup)
+ [Menyambung ke sistem file (konsol)](#configuration-filesystem-config)

## Peran eksekusi dan izin pengguna
<a name="configuration-filesystem-permissions"></a>

Jika sistem file tidak memiliki kebijakan yang dikonfigurasi pengguna AWS Identity and Access Management (IAM), EFS menggunakan kebijakan default yang memberikan akses penuh ke klien mana pun yang dapat terhubung ke sistem file menggunakan target pemasangan sistem file. Jika sistem file memiliki kebijakan IAM yang dikonfigurasi pengguna, peran eksekusi fungsi Anda harus memiliki izin yang benar. `elasticfilesystem`

**Izin peran eksekusi**
+ **sistem file elastis: ClientMount**
+ **elasticfilesystem: ClientWrite (tidak diperlukan untuk koneksi hanya-baca)**

Izin ini disertakan dalam kebijakan terkelola **AmazonElasticFileSystemClientReadWriteAccess**. Selain itu, peran eksekusi Anda harus memiliki [izin yang diperlukan untuk terhubung ke VPC sistem file](configuration-vpc.md#configuration-vpc-permissions).

Saat Anda mengonfigurasi sistem file, Lambda menggunakan izin Anda untuk memverifikasi target pemasangan. Untuk mengonfigurasi fungsi untuk terhubung ke sistem file, pengguna Anda memerlukan izin berikut:

**Izin pengguna**
+ **sistem file elastis: DescribeMountTargets**

## Mengonfigurasi sistem file dan titik akses
<a name="configuration-filesystem-setup"></a>

Buat sistem file di Amazon EFS dengan target pemasangan di setiap Availability Zone yang tehubung dengan fungsi Anda. Untuk performa dan ketahanan, gunakan setidaknya dua Availability Zone. Misalnya, dalam konfigurasi sederhana, Anda dapat memiliki VPC dengan dua subnet privat di Availability Zone yang berbeda. Fungsi ini terhubung ke subnet dan target pemasangan tersedia pada masing-masing subnet. Pastikan lalu lintas NFS (port 2049) diizinkan oleh grup keamanan yang digunakan oleh fungsi dan target pemasangan.

**catatan**  
Saat Anda membuat sistem file, Anda memilih mode performa yang tidak dapat diubah lagi nantinya. **Tujuan umum** mode ini memiliki latensi lebih rendah, dan mode **Maks I/O** mendukung throughput maksimum dan IOPS yang lebih tinggi. Untuk bantuan saat memilih, lihat [Performa Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/performance.html) dalam *Panduan Pengguna Amazon Elastic File System*.

Titik akses menghubungkan setiap instans fungsi ke target pemasangan yang tepat untuk Availability Zone yang terhubung dengannya. Untuk performa terbaik, buat titik akses dengan alur non-akar, dan batasi jumlah file yang Anda buat di setiap direktori. Contoh berikut membuat direktori bernama `my-function` pada sistem file dan menetapkan ID pemilik menjadi 1001 dengan izin direktori standar (755).

**Example konfigurasi titik akses**  
+ **Nama** – `files`
+ **ID Pengguna** – `1001`
+ **ID Grup** – `1001`
+ **Jalur** – `/my-function`
+ **Izin** – `755`
+ **ID pengguna pemilik** – `1001`
+ **ID pengguna grup** – `1001`

Saat fungsi menggunakan titik akses, fungsi diberikan ID pengguna 1001 dan memiliki akses penuh ke direktori.

Untuk informasi selengkapnya, lihat topik berikut di *Panduan Pengguna Amazon Elastic File System*:
+ [Membuat sumber daya untuk Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/creating-using.html)
+ [Bekerja dengan pengguna, grup, dan izin](https://docs.aws.amazon.com/efs/latest/ug/accessing-fs-nfs-permissions.html)

## Menyambung ke sistem file (konsol)
<a name="configuration-filesystem-config"></a>

Fungsi terhubung ke sistem file melalui jaringan lokal di VPC. Subnet yang terhubung ke fungsi Anda dapat berupa subnet yang sama yang berisi titik pemasangan untuk sistem file Anda, atau subnet di Availability Zone yang sama yang dapat mengarahkan lalu lintas NFS (port 2049) ke sistem file.

**catatan**  
Jika fungsi Anda belum terhubung ke VPC, lihat [Memberikan fungsi Lambda akses ke sumber daya di VPC Amazon](configuration-vpc.md).

**Untuk mengonfigurasi akses sistem file**

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

1. Pilih fungsi.

1. Pilih **Konfigurasi**, lalu pilih**Sistem file**.

1. Di bagian **Sistem file**, pilih **Tambahkan sistem file**.

1. Konfigurasikan properti berikut:
   + **Sistem file EFS** – Titik akses untuk sistem file dalam VPC yang sama.
   + **Jalur pemasangan lokal** – Lokasi tempat sistem file dipasang pada fungsi Lambda, memulai dengan `/mnt/`.

**Harga**  
Amazon EFS mengenakan biaya untuk penyimpanan dan throughput, dengan harga yang berbeda-beda menurut kelas penyimpanan. Untuk detailnya, lihat [Harga Amazon EFS](https://aws.amazon.com/efs/pricing).  
Lambda mengenakan biaya untuk transfer data antara. VPCs Ini hanya berlaku jika VPC fungsi Anda dihubungkan ke VPC lain dengan sistem file. Tarifnya sama dengan transfer EC2 data Amazon antara VPCs di Wilayah yang sama. Untuk detailnya, lihat [Harga Lambda](https://aws.amazon.com/lambda/pricing).

# Buat alias untuk fungsi Lambda
<a name="configuration-aliases"></a>

Anda dapat membuat alias untuk fungsi Lambda Anda. Alias Lambda adalah penunjuk ke versi fungsi yang dapat Anda perbarui. Pengguna fungsi dapat mengakses versi fungsi menggunakan alias Amazon Resource Name (ARN). Saat menerapkan versi baru, Anda dapat memperbarui alias untuk menggunakan versi baru, atau membagi lalu lintas di antara dua versi.

------
#### [ Console ]

**Untuk membuat alias menggunakan konsol**

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

1. Pilih fungsi.

1. Pilih **Alias**, lalu pilih **Buat alias**.

1. Di halaman **Buat alias**, lakukan hal berikut:

   1. Masukkan **Nama** untuk alias.

   1. (Opsional) Masukkan **Deskripsi** untuk alias.

   1. Untuk **Versi**, pilih versi fungsi yang ingin Anda tunjuk.

   1. (Opsional) Untuk mengonfigurasikan routing pada alias, perluas **Alias tertimbang**. Untuk informasi selengkapnya, lihat [Menerapkan penerapan kenari Lambda menggunakan alias tertimbang](configuring-alias-routing.md).

   1. Pilih **Simpan**.

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

Untuk membuat alias menggunakan AWS Command Line Interface (AWS CLI), gunakan perintah [create-alias](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-alias.html).

```
aws lambda create-alias \
  --function-name my-function \
  --name alias-name \
  --function-version version-number \
  --description " "
```

Untuk mengubah alias untuk mengarahkan versi baru fungsi, gunakan perintah [update-alias](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-alias.html).

```
aws lambda update-alias \
  --function-name my-function \
  --name alias-name \
  --function-version version-number
```

Untuk menghapus alias, gunakan perintah [delete-alias](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/delete-alias.html).

```
aws lambda delete-alias \
  --function-name my-function \
  --name alias-name
```

 AWS CLI Perintah pada langkah sebelumnya sesuai dengan operasi API Lambda berikut:
+ [CreateAlias](https://docs.aws.amazon.com/lambda/latest/api/API_CreateAlias.html)
+ [UpdateAlias](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateAlias.html)
+ [DeleteAlias](https://docs.aws.amazon.com/lambda/latest/api/API_DeleteAlias.html)

------

# Menggunakan alias Lambda dalam sumber peristiwa dan kebijakan izin
<a name="using-aliases"></a>

Setiap alias memiliki ARN yang unik. Alias hanya dapat menunjuk ke versi fungsi, bukan ke alias lain. Anda dapat memperbarui alias untuk menunjuk ke versi baru fungsi ini.

Sumber event seperti Amazon Simple Storage Service (Amazon S3) menginvokasi fungsi Lambda Anda. Sumber-sumber event ini mempertahankan pemetaan yang mengidentifikasi fungsi untuk diinvokasi ketika event terjadi. Jika Anda menentukan alias fungsi Lambda dalam konfigurasi pemetaan, Anda tidak perlu memperbarui pemetaan saat versi fungsi berubah. Untuk informasi selengkapnya, lihat [Bagaimana Lambda memproses catatan dari sumber acara berbasis streaming dan antrian](invocation-eventsourcemapping.md).

Dalam kebijakan sumber daya, Anda dapat memberikan izin kepada sumber event untuk menggunakan fungsi Lambda Anda. Jika Anda menentukan ARN alias dalam kebijakan, Anda tidak perlu memperbarui kebijakan ketika versi fungsi berubah.

## Kebijakan sumber daya
<a name="versioning-permissions-alias"></a>

Anda dapat menggunakan [kebijakan berbasis sumber daya](access-control-resource-based.md) untuk memberikan layanan, sumber daya, atau akses akun ke fungsi Anda. Cakupan izin tersebut tergantung pada apakah Anda menerapkannya ke alias, versi, atau keseluruhan fungsi. Misalnya, jika Anda menggunakan nama alias (seperti `helloworld:PROD`), izin tersebut memungkinkan Anda untuk menginvokasi `helloworld` menggunakan ARN alias (`helloworld:PROD`).

Jika Anda mencoba memanggil fungsi tersebut tanpa alias atau versi tertentu, Anda mendapatkan kesalahan izin. Kesalahan izin ini masih terjadi meskipun Anda berupaya untuk memanggil secara langsung versi fungsi yang terkait dengan alias.

Misalnya, AWS CLI perintah berikut memberikan izin Amazon S3 untuk memanggil alias PROD dari fungsi tersebut `helloworld` saat Amazon S3 bertindak atas nama. `amzn-s3-demo-bucket`

```
aws lambda add-permission \
  --function-name helloworld \
  --qualifier PROD \
  --statement-id 1 \
  --principal s3.amazonaws.com \
  --action lambda:InvokeFunction \
  --source-arn arn:aws:s3:::amzn-s3-demo-bucket \
  --source-account 123456789012
```

Untuk informasi selengkapnya tentang menggunakan nama sumber daya dalam kebijakan, lihat [Menyesuaikan bagian Sumber Daya dan Ketentuan kebijakan](lambda-api-permissions-ref.md).

# Menerapkan penerapan kenari Lambda menggunakan alias tertimbang
<a name="configuring-alias-routing"></a>

Anda dapat menggunakan alias tertimbang untuk membagi lalu lintas antara dua [versi berbeda dari fungsi](configuration-versions.md) yang sama. Dengan pendekatan ini, Anda dapat menguji versi baru dari fungsi Anda dengan persentase lalu lintas yang kecil dan dengan cepat memutar kembali jika perlu. Ini dikenal sebagai [penyebaran kenari](https://docs.aws.amazon.com/whitepapers/latest/overview-deployment-options/canary-deployments.html). Penerapan Canary berbeda dari blue/green penerapan dengan mengekspos versi baru hanya pada sebagian permintaan daripada mengalihkan semua lalu lintas sekaligus.

Anda dapat mengarahkan alias ke maksimal dua versi fungsi Lambda. Versi harus memenuhi kriteria berikut:
+ Kedua versi harus memiliki [peran eksekusi](lambda-intro-execution-role.md) sama.
+ Kedua versi harus memiliki konfigurasi [antrean surat mati](invocation-async-retain-records.md#invocation-dlq) sama, atau tidak ada konfigurasi antrean surat mati.
+ Kedua versi tersebut harus dipublikasikan. Alias tidak dapat menunjuk ke `$LATEST`.

**catatan**  
Lambda menggunakan model probabilistik sederhana untuk mendistribusikan lalu lintas di antara dua versi fungsi. Pada tingkat lalu lintas rendah, Anda mungkin melihat varians tinggi di antara persentase lalu lintas yang dikonfigurasi dan aktual di setiap versi. Jika fungsi Anda menggunakan konkurensi terprovisi, Anda dapat menghindari [invokasi limpahan](monitoring-metrics-types.md#invocation-metrics) dengan mengonfigurasi jumlah yang lebih tinggi dari instans konkurensi terprovisi selama perutean alias aktif. 

## Buat alias tertimbang
<a name="create-weighted-alias"></a>

------
#### [ Console ]

**Untuk mengonfigurasi perutean pada alias menggunakan konsol**
**catatan**  
Verifikasi bahwa fungsi memiliki setidaknya dua versi yang dipublikasikan. Untuk membuat versi tambahan, ikuti petunjuk dalam [Membuat versi fungsi](configuration-versions.md#configuration-versions-config).

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

1. Pilih fungsi.

1. Pilih **Alias**, lalu pilih **Buat alias**.

1. Di halaman **Buat alias**, lakukan hal berikut:

   1. Masukkan **Nama** untuk alias.

   1. (Opsional) Masukkan **Deskripsi** untuk alias.

   1. Untuk **Versi**, pilih versi fungsi pertama yang ingin Anda tunjuk.

   1. Perluas **Alias tertimbang**.

   1. Untuk **Versi tambahan**, pilih versi fungsi kedua yang ingin Anda tunjuk.

   1. Untuk **Bobot (%)**, masukkan nilai bobot untuk fungsi. *Bobot* adalah persentase lalu lintas yang ditetapkan untuk versi tersebut ketika alias dipanggil. Versi pertama menerima bobot residual. Misalnya, jika Anda menentukan 10 persen ke **Versi tambahan**, versi pertama ditetapkan ke 90 persen secara otomatis.

   1. Pilih **Simpan**.

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

Gunakan AWS CLI perintah [create-alias dan [update-alias](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-alias.html)](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-alias.html) untuk mengonfigurasi bobot lalu lintas antara dua versi fungsi. Saat membuat atau memperbarui alias, Anda menentukan berat lalu lintas dalam parameter `routing-config`.

Contoh berikut membuat alias fungsi Lambda bernama **routing-alias** yang menunjuk ke versi 1 dari fungsi. Versi 2 fungsi menerima 3 persen lalu lintas. 97 persen lalu lintas yang tersisa diarahkan ke versi 1.

```
aws lambda create-alias \
  --name routing-alias \
  --function-name my-function \
  --function-version 1  \
  --routing-config AdditionalVersionWeights={"2"=0.03}
```

Gunakan perintah `update-alias` untuk meningkatkan persentase lalu lintas masuk ke versi 2. Dalam contoh berikut, Anda meningkatkan lalu lintas menjadi 5 persen.

```
aws lambda update-alias \
  --name routing-alias \
  --function-name my-function \
  --routing-config AdditionalVersionWeights={"2"=0.05}
```

Untuk mengirimkan semua lalu lintas ke versi 2, gunakan `update-alias` untuk mengubah properti `function-version` untuk menunjuk alias ke versi 2. Perintah juga mengatur ulang konfigurasi perutean.

```
aws lambda update-alias \
  --name routing-alias \
  --function-name my-function  \
  --function-version 2 \
  --routing-config AdditionalVersionWeights={}
```

 AWS CLI Perintah pada langkah sebelumnya sesuai dengan operasi API Lambda berikut:
+ [CreateAlias](https://docs.aws.amazon.com/lambda/latest/api/API_CreateAlias.html)
+ [UpdateAlias](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateAlias.html)

------

## Menentukan versi mana yang dipanggil
<a name="determining-routing-version"></a>

Saat Anda mengonfigurasi bobot lalu lintas di antara dua versi fungsi, ada dua cara untuk menentukan versi fungsi Lambda yang sudah dipanggil:
+ **CloudWatch Log** — Lambda secara otomatis memancarkan entri `START` log yang berisi ID versi yang dipanggil untuk setiap pemanggilan fungsi. Contoh:

  `START RequestId: 1dh194d3759ed-4v8b-a7b4-1e541f60235f Version: 2` 

  Untuk invokasi alias, Lambda menggunakan dimensi `ExecutedVersion` untuk memfilter data metrik dengan versi yang dipanggil. Untuk informasi selengkapnya, lihat [Melihat metrik untuk fungsi Lambda](monitoring-metrics-view.md).
+ **Muatan respons (invokasi tersinkron)** – Respons untuk invokasi fungsi tersinkron yang mencakup header `x-amz-executed-version` untuk menunjukkan versi fungsi mana yang telah dipanggil.

## Buat penerapan bergulir dengan alias tertimbang
<a name="lambda-rolling-deployments"></a>

Use AWS CodeDeploy and AWS Serverless Application Model (AWS SAM) untuk membuat penerapan bergulir yang secara otomatis mendeteksi perubahan pada kode fungsi Anda, menerapkan versi baru fungsi Anda, dan secara bertahap meningkatkan jumlah lalu lintas yang mengalir ke versi baru. Jumlah lalu lintas dan tingkat peningkatan adalah parameter yang dapat Anda konfigurasi.

Dalam penerapan bergulir, AWS SAM lakukan tugas-tugas ini:
+ Mengkonfigurasi fungsi Lambda Anda dan membuat alias. Konfigurasi routing alias tertimbang adalah kemampuan dasar yang mengimplementasikan penerapan bergulir.
+ Membuat grup CodeDeploy aplikasi dan penyebaran. Grup penyebaran mengelola penerapan bergulir dan rollback, jika diperlukan.
+ Mendeteksi saat Anda membuat versi baru fungsi Lambda Anda.
+ Pemicu CodeDeploy untuk memulai penyebaran versi baru.

### Contoh AWS SAM template
<a name="sam-template"></a>

Contoh berikut menunjukkan [templat AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-basics.html) untuk deployment bergulir sederhana. 

```
AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: A sample SAM template for deploying Lambda functions

Resources:
# Details about the myDateTimeFunction Lambda function
  myDateTimeFunction:
    Type: [AWS::Serverless::Function](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html)
    Properties:
      Handler: myDateTimeFunction.handler
      Runtime: nodejs24.x
# Creates an alias named "live" for the function, and automatically publishes when you update the function.
      AutoPublishAlias: live
      DeploymentPreference:
# Specifies the deployment configuration
          Type: Linear10PercentEvery2Minutes
```

Templat ini menentukan fungsi Lambda bernama `myDateTimeFunction` dengan properti berikut. 

**AutoPublishAlias **  
Properti `AutoPublishAlias` membuat alias bernama `live`. Selain itu, kerangka kerja AWS SAM secara otomatis mendeteksi saat Anda menyimpan kode baru untuk fungsi tersebut. Kerangka kerja kemudian menerbitkan versi fungsi baru dan memperbarui alias `live` untuk mengarah ke versi baru.

**DeploymentPreference**  
`DeploymentPreference`Properti menentukan tingkat di mana CodeDeploy aplikasi menggeser lalu lintas dari versi asli fungsi Lambda ke versi baru. Nilai `Linear10PercentEvery2Minutes` menggeser sepuluh persen tambahan lalu lintas ke versi baru setiap dua menit.   
Untuk daftar konfigurasi deployment yang ditetapkan sebelumnya, lihat [Konfigurasi deployment](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html). 

Untuk informasi selengkapnya tentang cara membuat penerapan bergulir dengan CodeDeploy dan AWS SAM, lihat berikut ini:
+ [Tutorial: Menyebarkan fungsi CodeDeploy Lambda yang diperbarui dengan dan AWS Serverless Application Model](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorial-lambda-sam.html)
+ [Menerapkan aplikasi tanpa server secara bertahap dengan AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/automating-updates-to-serverless-apps.html)

# Kelola versi fungsi Lambda
<a name="configuration-versions"></a>

Anda dapat menggunakan versi untuk mengelola deployment fungsi Anda. Misalnya, Anda dapat menerbitkan versi baru dari fungsi untuk uji beta tanpa memengaruhi pengguna dari versi produksi stabil. Lambda membuat versi baru fungsi Anda setiap kali Anda menerbitkan fungsi. Versi baru adalah salinan dari versi fungsi yang belum diterbitkan. Versi yang tidak dipublikasikan diberi nama`$LATEST`.

Yang penting, setiap kali Anda menerapkan kode fungsi Anda, Anda menimpa kode saat ini. `$LATEST` Untuk menyimpan iterasi saat ini`$LATEST`, buat versi fungsi baru. Jika `$LATEST` identik dengan versi yang diterbitkan sebelumnya, Anda tidak akan dapat membuat versi baru sampai Anda menerapkan perubahan. `$LATEST` Perubahan ini dapat mencakup memperbarui kode, atau memodifikasi pengaturan konfigurasi fungsi.

Setelah Anda mempublikasikan versi fungsi, kode, runtime, arsitektur, memori, lapisan, dan sebagian besar pengaturan konfigurasi lainnya tidak dapat diubah. Ini berarti Anda tidak dapat mengubah pengaturan ini tanpa menerbitkan versi baru dari`$LATEST`. Anda dapat mengonfigurasi item berikut untuk versi fungsi yang diterbitkan:
+ [Pemicu](lambda-services.md#lambda-invocation-trigger)
+ [Destinasi](invocation-async-retain-records.md#create-destination)
+ [Konkurensi yang disediakan](provisioned-concurrency.md)
+ [Pemanggilan asinkron](invocation-async.md)
+ [Koneksi database dan proxy](services-rds.md#rds-configuration)

**catatan**  
Saat menggunakan [kontrol manajemen runtime](runtimes-update.md#runtime-management-controls) dengan mode **Otomatis**, versi runtime yang digunakan oleh versi fungsi diperbarui secara otomatis. Saat menggunakan **pembaruan Fungsi** atau mode **Manual**, versi runtime tidak diperbarui. Untuk informasi selengkapnya, lihat [Memahami bagaimana Lambda mengelola pembaruan versi runtime](runtimes-update.md).

**Topics**
+ [Membuat versi fungsi](#configuration-versions-config)
+ [Menggunakan versi](#versioning-versions-using)
+ [Memberi izin](#versioning-permissions)

## Membuat versi fungsi
<a name="configuration-versions-config"></a>

Anda dapat mengubah kode dan pengaturan fungsi hanya pada versi fungsi yang belum diterbitkan. Saat Anda memublikasikan versi, Lambda mengunci kode dan sebagian besar pengaturan untuk mempertahankan pengalaman yang konsisten bagi pengguna versi tersebut.

Anda dapat membuat versi fungsi menggunakan konsol Lambda.

**Untuk membuat versi baru fungsi**

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

1. Pilih fungsi dan kemudian pilih tab **Versi**.

1. Pada halaman konfigurasi fungsi, pilih **Terbitkan versi baru**.

1. (Opsional) Masukkan deskripsi versi.

1. Pilih **Terbitkan**.

Atau, Anda dapat mempublikasikan versi fungsi menggunakan operasi [PublishVersion](https://docs.aws.amazon.com/lambda/latest/api/API_PublishVersion.html)API.

 AWS CLI Perintah berikut menerbitkan versi baru dari suatu fungsi. Respons tersebut mengembalikan informasi konfigurasi tentang versi baru, termasuk nomor versi dan fungsi ARN dengan akhiran versi.

```
aws lambda publish-version --function-name my-function
```

Anda akan melihat output berikut:

```
{
  "FunctionName": "my-function",
  "FunctionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function:1",
  "Version": "1",
  "Role": "arn:aws:iam::123456789012:role/lambda-role",
  "Handler": "function.handler",
  "Runtime": "nodejs24.x",
  ...
}
```

**catatan**  
Lambda menetapkan nomor urut yang meningkat secara monoton untuk pembuatan versi. Lambda tidak pernah menggunakan kembali nomor versi, bahkan setelah Anda menghapus dan membuat ulang fungsi.

## Menggunakan versi
<a name="versioning-versions-using"></a>

Anda dapat merujuk fungsi Lambda Anda menggunakan ARN yang memenuhi syarat atau ARN yang tidak memenuhi syarat.
+ **ARN yang Memenuhi Syarat** – Fungsi ARN dengan akhiran versi. Contoh berikut mengacu pada versi 42 dari fungsi `helloworld`.

  ```
  arn:aws:lambda:aws-region:acct-id:function:helloworld:42
  ```
+ **ARN yang Tidak Memenuhi Syarat** – Fungsi ARN tanpa akhiran versi.

  ```
  arn:aws:lambda:aws-region:acct-id:function:helloworld
  ```

Anda dapat menggunakan ARN yang memenuhi syarat atau tidak memenuhi syarat dalam semua operasi API terkait. Namun, Anda tidak dapat menggunakan ARN yang tidak memenuhi syarat untuk membuat alias.

Jika Anda memutuskan untuk tidak menerbitkan versi fungsi, Anda dapat mengaktifkan fungsi tersebut menggunakan ARN yang memenuhi syarat atau tidak memenuhi syarat dalam [pemetaan sumber peristiwa](invocation-eventsourcemapping.md). Saat Anda menjalankan fungsi menggunakan ARN yang tidak memenuhi syarat, Lambda secara implisit memanggil. `$LATEST` 

ARN yang memenuhi syarat untuk setiap versi fungsi Lambda adalah unik. Setelah Anda menerbitkan versi, Anda tidak dapat mengubah ARN atau kode fungsi.

Lambda menerbitkan versi fungsi baru hanya jika kode belum pernah dipublikasikan, atau jika kode telah berubah dari versi terakhir yang diterbitkan. Jika tidak ada perubahan, versi fungsi tetap pada versi publikasi terakhir.

Saat Anda memublikasikan versi, Lambda membuat snapshot yang tidak dapat diubah dari kode dan konfigurasi fungsi Anda. Tidak semua perubahan konfigurasi memicu publikasi versi baru. Perubahan konfigurasi berikut memenuhi syarat fungsi untuk publikasi versi:
+ Kode fungsi
+ Variabel-variabel lingkungan
+ Waktu Aktif
+ Handler
+ Lapisan
+ Ukuran memori
+ Waktu habis
+ Konfigurasi VPC
+ Konfigurasi Dead Letter Queue (DLQ)
+ IAM Role
+ Deskripsi
+ Arsitektur (x86\$164 atau arm64)
+ Ukuran penyimpanan sementara
+ Jenis Package
+ Konfigurasi Pencatatan Log
+ Konfigurasi sistem file
+ SnapStart
+ Konfigurasi penelusuran

Pengaturan operasional seperti [konkurensi cadangan](configuration-concurrency.md) tidak memicu publikasi versi baru saat diubah.

## Memberi izin
<a name="versioning-permissions"></a>

Anda dapat menggunakan [kebijakan berbasis sumber daya](access-control-resource-based.md) atau [kebijakan berbasis identitas](access-control-identity-based.md) untuk memberikan akses ke fungsi Anda. Ruang lingkup izin tergantung pada apakah Anda menerapkan kebijakan ke fungsi atau ke salah satu versi fungsi. Untuk informasi selengkapnya tentang nama sumber daya fungsi dalam kebijakan, lihat [Menyesuaikan bagian Sumber Daya dan Ketentuan kebijakan](lambda-api-permissions-ref.md). 

Anda dapat menyederhanakan pengelolaan sumber peristiwa dan AWS Identity and Access Management (IAM) kebijakan dengan menggunakan alias fungsi. Lihat informasi yang lebih lengkap di [Buat alias untuk fungsi Lambda](configuration-aliases.md).

# Menggunakan tag pada fungsi Lambda
<a name="configuration-tags"></a>

Anda dapat menandai fungsi untuk mengatur dan mengelola sumber daya Anda. Tag adalah pasangan nilai kunci bentuk bebas yang terkait dengan sumber daya Anda yang didukung secara keseluruhan. Layanan AWS Untuk informasi selengkapnya tentang kasus penggunaan tag, lihat [Strategi penandaan umum](https://docs.aws.amazon.com//tag-editor/latest/userguide/best-practices-and-strats.html#tag-strategies) di * AWS Sumber Daya Penandaan dan Panduan Editor Tag*. 

Tanda berlaku pada tingkat fungsi, bukan pada versi atau alias. Tag bukan bagian dari konfigurasi khusus versi yang AWS Lambda membuat snapshot saat Anda memublikasikan versi. Anda dapat menggunakan API Lambda untuk melihat dan memperbarui tag. Anda juga dapat melihat dan memperbarui tag sambil mengelola fungsi tertentu di konsol Lambda.

**Topics**
+ [Izin diperlukan untuk bekerja dengan tag](#fxn-tags-required-permissions)
+ [Menggunakan tag dengan konsol Lambda](#using-tags-with-the-console)
+ [Menggunakan tag dengan AWS CLI](#configuration-tags-cli)

## Izin diperlukan untuk bekerja dengan tag
<a name="fxn-tags-required-permissions"></a>

Untuk mengizinkan identitas AWS Identity and Access Management (IAM) (pengguna, grup, atau peran) membaca atau menyetel tag pada sumber daya, berikan izin yang sesuai:
+ **lambda: ListTags** —Ketika sumber daya memiliki tag, berikan izin ini kepada siapa saja yang perlu memanggilnya`ListTags`. Untuk fungsi yang ditandai, izin ini juga diperlukan untuk`GetFunction`.
+ **lambda: TagResource** —Berikan izin ini kepada siapa saja yang perlu memanggil `TagResource` atau melakukan tag saat membuat.

Secara opsional, pertimbangkan untuk memberikan UntagResource izin **lambda:** juga untuk mengizinkan `UntagResource` panggilan ke sumber daya.

Untuk informasi selengkapnya, lihat [Kebijakan IAM berbasis identitas untuk Lambda](access-control-identity-based.md).

## Menggunakan tag dengan konsol Lambda
<a name="using-tags-with-the-console"></a>

Anda dapat menggunakan konsol Lambda untuk membuat fungsi yang memiliki tag, menambahkan tag ke fungsi yang ada, dan memfilter fungsi berdasarkan tag yang Anda tambahkan.

**Untuk menambahkan tag 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 bawah **Informasi dasar**, atur fungsi Anda. Untuk informasi selengkapnya tentang mengonfigurasi fungsi, lihat[Mengkonfigurasi fungsi AWS Lambda](lambda-functions.md). 

1. Perluas **Pengaturan lanjutan**, lalu pilih **Aktifkan tag**.

1. Pilih **Tambahkan tag baru**, lalu masukkan **Kunci** dan **Nilai** opsional. Untuk menambahkan lebih banyak tag, ulangi langkah ini.

1. Pilih **Buat fungsi**.

**Untuk menambahkan tag 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. Pilih **Konfigurasi**, lalu pilih **Tag**.

1. Di bagian **Tanda**, pilih **Kelola tanda**.

1. Pilih **Tambahkan tag baru**, lalu masukkan **Kunci** dan **Nilai** opsional. Untuk menambahkan lebih banyak tag, ulangi langkah ini.

1. Pilih **Simpan**.

**Untuk memfilter fungsi dengan tag**

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

1. Pilih kotak pencarian untuk melihat daftar properti fungsi dan tombol tag.

1. Pilih kunci tag untuk melihat daftar nilai yang sedang digunakan di AWS Wilayah saat ini.

1. Pilih **Gunakan: “tag-name”** untuk melihat semua fungsi yang ditandai dengan kunci ini, atau pilih **Operator** untuk memfilter lebih lanjut berdasarkan nilai.

1. Pilih nilai tag Anda untuk difilter dengan kombinasi kunci tag dan nilai.

Bilah pencarian juga mendukung pencarian kunci tanda. Masukkan `tag` untuk melihat hanya daftar kunci tag, atau masukkan nama kunci untuk menemukannya dalam daftar.

## Menggunakan tag dengan AWS CLI
<a name="configuration-tags-cli"></a>

Anda dapat menambahkan dan menghapus tag pada sumber daya Lambda yang ada, termasuk fungsi, dengan API Lambda. Anda juga dapat menambahkan tag saat membuat fungsi, yang memungkinkan Anda menyimpan sumber daya yang ditandai melalui seluruh siklus hidupnya.

### Memperbarui tag dengan tag Lambda APIs
<a name="tags-fxn-api-config"></a>

Anda dapat menambahkan dan menghapus tag untuk sumber daya Lambda yang didukung melalui operasi [TagResource](https://docs.aws.amazon.com/lambda/latest/api/API_TagResource.html)dan [UntagResource](https://docs.aws.amazon.com/lambda/latest/api/API_UntagResource.html)API.

Anda dapat memanggil operasi ini menggunakan AWS CLI. Untuk menambahkan tag ke sumber daya yang ada, gunakan `tag-resource` perintah. Contoh ini menambahkan dua tag, satu dengan kunci *Department* dan satu dengan kunci*CostCenter*.

```
aws lambda tag-resource \
--resource arn:aws:lambda:us-east-2:123456789012:resource-type:my-resource \
--tags Department=Marketing,CostCenter=1234ABCD
```

Untuk menghapus tanda, gunakan perintah `untag-resource`. Contoh ini menghapus tag dengan kunci*Department*.

```
aws lambda untag-resource --resource arn:aws:lambda:us-east-1:123456789012:resource-type:resource-identifier \
--tag-keys Department
```

### Menambahkan tag saat membuat fungsi
<a name="creating-tags-when-you-create-a-function-cli"></a>

Untuk membuat fungsi Lambda baru dengan tag, gunakan operasi [CreateFunction](https://docs.aws.amazon.com//lambda/latest/api/API_CreateFunction.html)API. Tentukan parameter `Tags`. Anda dapat memanggil operasi ini dengan perintah `create-function` CLI dan opsi --tags. Sebelum menggunakan parameter tag dengan`CreateFunction`, pastikan bahwa peran Anda memiliki izin untuk menandai sumber daya bersama izin yang biasa diperlukan untuk operasi ini. Untuk informasi selengkapnya tentang izin untuk penandaan, lihat. [Izin diperlukan untuk bekerja dengan tag](#fxn-tags-required-permissions) Contoh ini menambahkan dua tag, satu dengan kunci *Department* dan satu dengan kunci*CostCenter*.

```
aws lambda create-function --function-name my-function
--handler index.js --runtime nodejs24.x \
--role arn:aws:iam::123456789012:role/lambda-role \
--tags Department=Marketing,CostCenter=1234ABCD
```

### Melihat tag pada suatu fungsi
<a name="viewing-tags-on-a-function-cli"></a>

Untuk melihat tag yang diterapkan ke sumber daya Lambda tertentu, gunakan operasi `ListTags` API. Untuk informasi selengkapnya, lihat [ListTags](https://docs.aws.amazon.com/lambda/latest/api/API_ListTags.html).

Anda dapat memanggil operasi ini dengan `list-tags` AWS CLI perintah dengan memberikan ARN (Nama Sumber Daya Amazon).

```
aws lambda list-tags --resource arn:aws:lambda:us-east-1:123456789012:resource-type:resource-identifier
```

Anda dapat melihat tag yang diterapkan ke sumber daya tertentu dengan operasi [GetFunction](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunction.html)API. Fungsionalitas yang sebanding tidak tersedia untuk jenis sumber daya lainnya.

Anda dapat memanggil operasi ini dengan perintah `get-function` CLI:

```
aws lambda get-function --function-name my-function
```

### Memfilter sumber daya berdasarkan tag
<a name="tags-fxn-filtering"></a>

Anda dapat menggunakan operasi AWS Resource Groups Tagging API [GetResources](https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_GetResources.html)API untuk memfilter sumber daya Anda berdasarkan tag. `GetResources`Operasi menerima hingga 10 filter, dengan setiap filter berisi kunci tag dan hingga 10 nilai tag. Anda `GetResources` menyediakan `ResourceType` untuk memfilter berdasarkan jenis sumber daya tertentu.

Anda dapat memanggil operasi ini menggunakan `get-resources` AWS CLI perintah. Untuk contoh penggunaan`get-resources`, lihat [mendapatkan sumber daya di Referensi](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/resourcegroupstaggingapi/get-resources.html#examples) Perintah *AWS CLI*. 

# Streaming respons untuk fungsi Lambda
<a name="configuration-response-streaming"></a>

Fungsi Lambda dapat mengalirkan muatan respons secara native kembali ke klien melalui [fungsi Lambda URLs](urls-configuration.md) atau dengan menggunakan [InvokeWithResponseStream](https://docs.aws.amazon.com/lambda/latest/api/API_InvokeWithResponseStream.html)API (melalui AWS SDK atau panggilan API langsung). Fungsi Lambda Anda juga dapat mengalirkan muatan respons melalui [integrasi proxy Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/response-transfer-mode-lambda.html), yang menggunakan [InvokeWithResponseStream](https://docs.aws.amazon.com/lambda/latest/api/API_InvokeWithResponseStream.html)API untuk menjalankan fungsi Anda. Streaming respons dapat menguntungkan aplikasi sensitif latensi dengan meningkatkan kinerja time to first byte (TTFB). Ini karena Anda dapat mengirim sebagian tanggapan kembali ke klien saat tersedia. Selain itu, fungsi streaming respons dapat mengembalikan muatan hingga 200 MB, dibandingkan dengan maksimum 6 MB untuk respons buffer. Streaming respons juga berarti bahwa fungsi Anda tidak perlu sesuai dengan seluruh respons dalam memori. Untuk respons yang sangat besar, ini dapat mengurangi jumlah memori yang perlu Anda konfigurasikan untuk fungsi Anda. 

**catatan**  
Streaming respons Lambda belum tersedia di semua. Wilayah AWS Silakan merujuk ke [AWS Kemampuan Builder Center menurut Wilayah](https://builder.aws.com/build/capabilities) untuk ketersediaan fitur menurut Wilayah.

Kecepatan Lambda mengalirkan respons Anda tergantung pada ukuran respons. Rasio streaming untuk 6 MB pertama dari respons fungsi Anda tidak dibatasi. Untuk tanggapan yang lebih besar dari 6 MB, sisa respons tunduk pada batas bandwidth. Untuk informasi lebih lanjut tentang bandwidth streaming, lihat[Batas bandwidth untuk streaming respons](#config-rs-bandwidth-cap).

Respons streaming menimbulkan biaya dan tanggapan yang dialirkan tidak terganggu atau dihentikan ketika koneksi klien yang memanggil terputus. Pelanggan akan ditagih untuk durasi fungsi penuh, jadi pelanggan harus berhati-hati saat mengonfigurasi batas waktu fungsi yang lama.

Lambda mendukung streaming respons pada runtime terkelola Node.js. [Untuk bahasa lain, termasuk Python, Anda dapat [menggunakan runtime kustom dengan integrasi API Runtime kustom](runtimes-custom.md#runtimes-custom-response-streaming) untuk melakukan streaming respons atau menggunakan Adaptor Web Lambda.](https://github.com/awslabs/aws-lambda-web-adapter)

**catatan**  
Saat menguji fungsi Anda melalui konsol Lambda, Anda akan selalu melihat respons sebagai buffer.

**Topics**
+ [Batas bandwidth untuk streaming respons](#config-rs-bandwidth-cap)
+ [Kompatibilitas VPC dengan streaming respons](#config-rs-vpc-compatibility)
+ [Menulis fungsi Lambda yang mendukung streaming respons](config-rs-write-functions.md)
+ [Memanggil fungsi yang diaktifkan streaming respons menggunakan fungsi Lambda URLs](config-rs-invoke-furls.md)
+ [Tutorial: Membuat Fungsi Lambda Streaming Respons dengan URL Fungsi](response-streaming-tutorial.md)

## Batas bandwidth untuk streaming respons
<a name="config-rs-bandwidth-cap"></a>

6 MB pertama dari payload respons fungsi Anda memiliki bandwidth yang tidak dibatasi. Setelah ledakan awal ini, Lambda mengalirkan respons Anda dengan kecepatan maksimum 2. MBps Jika respons fungsi Anda tidak pernah melebihi 6 MB, maka batas bandwidth ini tidak pernah berlaku. 

**catatan**  
Batas bandwidth hanya berlaku untuk payload respons fungsi Anda, dan bukan untuk akses jaringan oleh fungsi Anda.

Tingkat bandwidth yang tidak dibatasi bervariasi tergantung pada sejumlah faktor, termasuk kecepatan pemrosesan fungsi Anda. Anda biasanya dapat mengharapkan tingkat yang lebih tinggi dari 2 MBps untuk 6 MB pertama dari respons fungsi Anda. Jika fungsi Anda mengalirkan respons ke tujuan di luar AWS, kecepatan streaming juga tergantung pada kecepatan koneksi internet eksternal. 

## Kompatibilitas VPC dengan streaming respons
<a name="config-rs-vpc-compatibility"></a>

Saat menggunakan fungsi Lambda di lingkungan VPC, ada pertimbangan penting untuk streaming respons:
+ Fungsi Lambda URLs tidak mendukung streaming respons dalam lingkungan VPC.
+ Anda dapat menggunakan streaming respons dalam VPC dengan menjalankan fungsi Lambda Anda melalui SDK menggunakan API. AWS `InvokeWithResponseStream` Ini memerlukan pengaturan titik akhir VPC yang sesuai untuk Lambda.
+ Untuk lingkungan VPC, Anda harus membuat titik akhir VPC antarmuka untuk Lambda untuk memungkinkan komunikasi antara sumber daya Anda di VPC dan layanan Lambda.

Arsitektur khas untuk streaming respons dalam VPC mungkin termasuk:

```
Client in VPC -> Interface VPC endpoint for Lambda -> Lambda function -> Response streaming back through the same path
```

# Menulis fungsi Lambda yang mendukung streaming respons
<a name="config-rs-write-functions"></a>

Menulis handler untuk fungsi streaming respons berbeda dari pola handler biasa. Saat menulis fungsi streaming, pastikan untuk melakukan hal berikut:
+ Bungkus fungsi Anda dengan `awslambda.streamifyResponse()` dekorator. Objek `awslambda` global disediakan oleh lingkungan runtime Node.js Lambda.
+ Akhiri aliran dengan anggun untuk memastikan bahwa semua pemrosesan data selesai.

## Mengkonfigurasi fungsi handler untuk mengalirkan respons
<a name="config-rs-write-functions-handler"></a>

Untuk menunjukkan ke runtime bahwa Lambda harus mengalirkan respons fungsi Anda, Anda harus membungkus fungsi Anda dengan `streamifyResponse()` dekorator. Ini memberi tahu runtime untuk menggunakan jalur logika yang tepat untuk respons streaming dan memungkinkan fungsi untuk mengalirkan respons.

`streamifyResponse()`Dekorator menerima fungsi yang menerima parameter berikut:
+ `event`— Memberikan informasi tentang peristiwa pemanggilan URL fungsi, seperti metode HTTP, parameter kueri, dan badan permintaan.
+ `responseStream`— Menyediakan aliran yang dapat ditulis.
+ `context`Menyediakan metode dan properti dengan informasi tentang pemanggilan, fungsi, dan lingkungan eksekusi.

`responseStream`Objeknya adalah [Node.js `writableStream`](https://nodesource.com/blog/understanding-streams-in-nodejs/). Seperti halnya aliran seperti itu, Anda harus menggunakan `pipeline()` metode ini.

**catatan**  
Objek `awslambda` global secara otomatis disediakan oleh runtime Node.js Lambda dan tidak diperlukan impor.

**Example handler yang mendukung streaming respons**  

```
import { pipeline } from 'node:stream/promises';
import { Readable } from 'node:stream';

export const echo = awslambda.streamifyResponse(async (event, responseStream, _context) => {
  // As an example, convert event to a readable stream.
  const requestStream = Readable.from(Buffer.from(JSON.stringify(event)));

  await pipeline(requestStream, responseStream);
});
```

Meskipun `responseStream` menawarkan `write()` metode untuk menulis ke aliran, kami sarankan Anda menggunakannya [https://nodejs.org/api/stream.html#streampipelinesource-transforms-destination-callback](https://nodejs.org/api/stream.html#streampipelinesource-transforms-destination-callback)sedapat mungkin. Menggunakan `pipeline()` memastikan bahwa aliran yang dapat ditulis tidak kewalahan oleh aliran yang dapat dibaca lebih cepat.

## Mengakhiri aliran
<a name="config-rs-write-functions-end"></a>

Pastikan Anda mengakhiri aliran dengan benar sebelum handler kembali. `pipeline()`Metode ini menangani ini secara otomatis.

Untuk kasus penggunaan lainnya, panggil `responseStream.end()` metode untuk mengakhiri aliran dengan benar. Metode ini menandakan bahwa tidak ada lagi data yang harus ditulis ke aliran. Metode ini tidak diperlukan jika Anda menulis ke aliran dengan `pipeline()` atau`pipe()`.

Dimulai dengan Node.js 24, Lambda tidak lagi menunggu janji yang belum terselesaikan selesai setelah handler Anda kembali atau aliran respons berakhir. Jika fungsi Anda bergantung pada operasi asinkron tambahan, seperti pengatur waktu atau pengambilan, Anda harus `await` menggunakannya di handler Anda.

**Example Contoh mengakhiri aliran dengan pipeline ()**  

```
import { pipeline } from 'node:stream/promises';

export const handler = awslambda.streamifyResponse(async (event, responseStream, _context) => {
  await pipeline(requestStream, responseStream);
});
```

**Example Contoh mengakhiri aliran tanpa pipeline ()**  

```
export const handler = awslambda.streamifyResponse(async (event, responseStream, _context) => {
  responseStream.write("Hello ");
  responseStream.write("world ");
  responseStream.write("from ");
  responseStream.write("Lambda!");
  responseStream.end();
});
```

# Memanggil fungsi yang diaktifkan streaming respons menggunakan fungsi Lambda URLs
<a name="config-rs-invoke-furls"></a>

**catatan**  
Fungsi Lambda Anda sekarang dapat mengalirkan muatan respons melalui integrasi proxy [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/response-transfer-mode-lambda.html).

Anda dapat memanggil fungsi yang diaktifkan streaming respons dengan mengubah mode pemanggilan URL fungsi Anda. Mode pemanggilan menentukan operasi API mana yang digunakan Lambda untuk menjalankan fungsi Anda. Mode pemanggilan yang tersedia adalah:
+ `BUFFERED`— Ini adalah opsi default. Lambda memanggil fungsi Anda menggunakan operasi API. `Invoke` Hasil pemanggilan tersedia saat muatan selesai. Ukuran muatan maksimum adalah 6 MB.
+ `RESPONSE_STREAM`— Memungkinkan fungsi Anda untuk mengalirkan hasil payload saat tersedia. Lambda memanggil fungsi Anda menggunakan operasi API. `InvokeWithResponseStream` Ukuran payload respons maksimum adalah 200 MB.

Anda masih dapat menjalankan fungsi Anda tanpa streaming respons dengan langsung memanggil operasi `Invoke` API. Namun, Lambda mengalirkan semua muatan respons untuk pemanggilan yang datang melalui URL fungsi hingga Anda mengubah mode pemanggilan menjadi. `BUFFERED`

------
#### [ Console ]

**Untuk mengatur mode pemanggilan URL fungsi (konsol)**

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

1. Pilih nama fungsi yang ingin Anda atur untuk mode pemanggilan.

1. Pilih tab **Konfigurasi**, lalu pilih **URL Fungsi**.

1. Pilih **Edit**, lalu pilih **Pengaturan tambahan**.

1. Di bawah **mode Panggilan, pilih mode** pemanggilan yang Anda inginkan.

1. Pilih **Simpan**.

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

**Untuk mengatur mode pemanggilan URL ()AWS CLI fungsi**

```
aws lambda update-function-url-config \
  --function-name my-function \
  --invoke-mode RESPONSE_STREAM
```

------
#### [ CloudFormation ]

**Untuk mengatur mode pemanggilan URL ()CloudFormation fungsi**

```
MyFunctionUrl:
  Type: AWS::Lambda::Url
  Properties:
    AuthType: AWS_IAM
    InvokeMode: RESPONSE_STREAM
```

------

Untuk informasi selengkapnya tentang mengonfigurasi fungsi URLs, lihat Fungsi [ URLsLambda](urls-configuration.md).

# Tutorial: Membuat Fungsi Lambda Streaming Respons dengan URL Fungsi
<a name="response-streaming-tutorial"></a>

Dalam tutorial ini, Anda membuat fungsi Lambda didefinisikan sebagai arsip file.zip dengan titik akhir URL fungsi yang mengembalikan aliran respons. Untuk informasi selengkapnya tentang mengonfigurasi fungsi URLs, lihat[Fungsi URLs](urls-configuration.md).

## Prasyarat
<a name="response-streaming-prepare"></a>

Tutorial ini mengasumsikan bahwa Anda memiliki pengetahuan tentang operasi Lambda dan konsol Lambda dasar. Jika belum, ikuti petunjuk di [Membuat fungsi Lambda dengan konsol](getting-started.md#getting-started-create-function) untuk membuat fungsi Lambda pertama Anda.

Untuk menyelesaikan langkah-langkah berikut, Anda memerlukan [AWS CLI versi 2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). Perintah dan output yang diharapkan dicantumkan dalam blok terpisah:

```
aws --version
```

Anda akan melihat output berikut:

```
aws-cli/2.13.27 Python/3.11.6 Linux/4.14.328-248.540.amzn2.x86_64 exe/x86_64.amzn.2
```

Untuk perintah panjang, karakter escape (`\`) digunakan untuk memisahkan perintah menjadi beberapa baris.

Di Linux dan macOS, gunakan shell dan manajer paket pilihan Anda.

**catatan**  
Di Windows, beberapa perintah Bash CLI yang biasa Anda gunakan dengan Lambda (`zip`seperti) tidak didukung oleh terminal bawaan sistem operasi. Untuk mendapatkan versi terintegrasi Windows dari Ubuntu dan Bash, [instal Windows Subsystem untuk](https://docs.microsoft.com/en-us/windows/wsl/install-win10) Linux. Contoh perintah CLI dalam panduan ini menggunakan pemformatan Linux. Perintah yang menyertakan dokumen JSON sebaris harus diformat ulang jika Anda menggunakan CLI Windows. 

## Membuat peran eksekusi
<a name="response-streaming-create-iam-role"></a>

Buat [peran eksekusi](lambda-intro-execution-role.md) yang memberikan izin kepada fungsi Lambda Anda untuk mengakses sumber daya AWS .

**Untuk membuat peran eksekusi**

1. Buka [halaman](https://console.aws.amazon.com/iam/home#/roles) Peran konsol AWS Identity and Access Management (IAM).

1. Pilih **Buat peran**.

1. Buat peran dengan properti berikut:
   + **Jenis entitas tepercaya** - **AWS layanan**
   + **Kasus penggunaan** - **Lambda**
   + **Izin** – **AWSLambdaBasicExecutionRole**
   + **Nama peran** – **response-streaming-role**

**AWSLambdaBasicExecutionRole**Kebijakan ini memiliki izin yang diperlukan fungsi untuk menulis log ke Amazon CloudWatch Logs. Setelah Anda membuat peran, catat Nama Sumber Daya Amazon (ARN). Anda akan membutuhkannya di langkah berikutnya.

## Buat fungsi streaming respons (AWS CLI)
<a name="response-streaming-tutorial-create-function-cli"></a>

Buat respons streaming fungsi Lambda dengan titik akhir URL fungsi menggunakan (). AWS Command Line Interface AWS CLI

**Untuk membuat fungsi yang dapat mengalirkan respons**

1. Salin contoh kode berikut ke file bernama `index.js`. Fungsi ini mengalirkan tiga respons, dipisahkan oleh 1 detik.

   ```
   exports.handler = awslambda.streamifyResponse(
   	async (event, responseStream, _context) => {
   		// Metadata is a JSON serializable JS object. Its shape is not defined here.
   		const metadata = {
   		statusCode: 200,
   		headers: {
   			"Content-Type": "application/json",
   			"CustomHeader": "outerspace"
   		}
   		};
   	
   		// Assign to the responseStream parameter to prevent accidental reuse of the non-wrapped stream.
   		responseStream = awslambda.HttpResponseStream.from(responseStream, metadata);
   	
   		responseStream.write("Streaming with Helper \n");
   		await new Promise(r => setTimeout(r, 1000));
   		responseStream.write("Hello 0 \n");
   		await new Promise(r => setTimeout(r, 1000));
   		responseStream.write("Hello 1 \n");
   		await new Promise(r => setTimeout(r, 1000));
   		responseStream.write("Hello 2 \n");
   		await new Promise(r => setTimeout(r, 1000));
   		responseStream.end();
   		await responseStream.finished();
   	}
     );
   ```

1. Buat paket deployment.

   ```
   zip function.zip index.js
   ```

1. Buat fungsi Lambda dengan perintah `create-function`. Ganti nilai `--role` dengan peran ARN dari langkah sebelumnya. Perintah ini menetapkan batas waktu fungsi menjadi 10 detik, yang memungkinkan fungsi untuk mengalirkan tiga respons.

   ```
   aws lambda create-function \
     --function-name my-streaming-function \
     --runtime nodejs24.x \
     --zip-file fileb://function.zip \
     --handler index.handler \
     --timeout 10 \
     --role arn:aws:iam::123456789012:role/response-streaming-role
   ```

**Untuk membuat URL fungsi**

1. Tambahkan kebijakan berbasis sumber daya ke fungsi Anda yang memberikan dan izin. `lambda:InvokeFunctionUrl` `lambda:InvokeFunction` Setiap pernyataan harus ditambahkan dalam perintah terpisah. Ganti nilai `--principal` dengan Akun AWS ID Anda.

   ```
   aws lambda add-permission \
     --function-name my-streaming-function \
     --action lambda:InvokeFunctionUrl \
     --statement-id UrlPolicyInvokeURL \
     --principal 123456789012 \
     --function-url-auth-type AWS_IAM
   ```

   ```
   aws lambda add-permission \
       --function-name my-streaming-function \
       --action lambda:InvokeFunction \
       --statement-id UrlPolicyInvokeFunction \
       --principal 123456789012
   ```

1. Buat titik akhir URL untuk fungsi dengan `create-function-url-config` perintah.

   ```
   aws lambda create-function-url-config \
     --function-name my-streaming-function \
     --auth-type AWS_IAM \
     --invoke-mode RESPONSE_STREAM
   ```
**catatan**  
Jika Anda mendapatkan kesalahan`--invoke-mode`, Anda mungkin perlu memutakhirkan ke [versi yang lebih baru](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). AWS CLI

## Uji titik akhir URL fungsi
<a name="response-streaming-tutorial-test"></a>

Uji integrasi Anda dengan menjalankan fungsi Anda. Anda dapat membuka URL fungsi Anda di browser, atau Anda dapat menggunakan curl.

```
curl --request GET "https://abcdefghijklm7nop7qrs740abcd.lambda-url.us-east-1.on.aws/" --user "AKIAIOSFODNN7EXAMPLE" --aws-sigv4 "aws:amz:us-east-1:lambda" --no-buffer
```

URL fungsi kami menggunakan jenis `IAM_AUTH` otentikasi. Ini berarti Anda perlu menandatangani permintaan dengan [kunci AWS akses dan kunci rahasia](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) Anda. Pada perintah sebelumnya, ganti `AKIAIOSFODNN7EXAMPLE` dengan ID kunci AWS akses. Masukkan kunci AWS rahasia Anda saat diminta. Jika Anda tidak memiliki kunci AWS rahasia Anda, Anda dapat [menggunakan AWS kredenal sementara](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) sebagai gantinya.

Anda akan melihat tanggapan seperti ini:

```
Streaming with Helper 
Hello 0 
Hello 1
Hello 2
```

## Bersihkan sumber daya Anda
<a name="cleanup"></a>

Sekarang Anda dapat menghapus sumber daya yang Anda buat untuk tutorial ini, kecuali Anda ingin mempertahankannya. Dengan menghapus AWS sumber daya yang tidak lagi Anda gunakan, Anda mencegah tagihan yang tidak perlu ke Anda Akun AWS.

**Untuk menghapus peran eksekusi**

1. Buka [halaman Peran](https://console.aws.amazon.com/iam/home#/roles) dari konsol IAM.

1. Pilih peran eksekusi yang Anda buat.

1. Pilih **Hapus**.

1. Masukkan nama peran di bidang input teks dan pilih **Hapus**.

**Untuk menghapus fungsi Lambda**

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

1. Pilih fungsi yang Anda buat.

1. Pilih **Tindakan**, **Hapus**.

1. Ketik **confirm** kolom input teks dan pilih **Hapus**.

# Menggunakan titik akhir metadata Lambda
<a name="configuration-metadata-endpoint"></a>

Titik akhir metadata Lambda memungkinkan fungsi Anda menemukan Availability Zone (AZ) tempat mereka berjalan, memungkinkan Anda mengoptimalkan latensi dengan merutekan ke sumber daya AZ yang sama seperti titik akhir Amazon dan ElastiCache Amazon RDS, dan menerapkan pola ketahanan AZ-aware.

Titik akhir mengembalikan metadata dalam format JSON sederhana melalui API HTTP localhost dalam lingkungan eksekusi dan dapat diakses oleh runtime dan ekstensi.

**Topics**
+ [Memulai](#metadata-endpoint-getting-started)
+ [Memahami Zona Ketersediaan IDs](#metadata-endpoint-az-ids)
+ [Referensi API](#metadata-endpoint-api-reference)

## Memulai
<a name="metadata-endpoint-getting-started"></a>

[Powertools untuk AWS Lambda](https://docs.aws.amazon.com/powertools/) menyediakan utilitas untuk mengakses titik akhir metadata Lambda di Python,, Java, dan .NET. TypeScript Utilitas menyimpan respons setelah panggilan pertama dan menangani pembatalan SnapStart cache secara otomatis.

Gunakan utilitas metadata Powertools untuk AWS Lambda atau hubungi titik akhir metadata secara langsung

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

Instal paket Powertools:

```
pip install "aws-lambda-powertools"
```

Gunakan utilitas metadata di handler Anda:

**Example Mengambil ID AZ dengan Powertools (Python)**  

```
from aws_lambda_powertools.utilities.lambda_metadata import get_lambda_metadata

def handler(event, context):
    metadata = get_lambda_metadata()
    az_id = metadata.availability_zone_id  # e.g., "use1-az1"

    return {"az_id": az_id}
```

------
#### [ TypeScript ]

Instal paket Powertools:

```
npm install @aws-lambda-powertools/commons
```

Gunakan utilitas metadata di handler Anda:

**Example Mengambil ID AZ dengan Powertools () TypeScript**  

```
import { getMetadata } from '@aws-lambda-powertools/commons/utils/metadata';

const metadata = await getMetadata();

export const handler = async () => {
  const { AvailabilityZoneID: azId } = metadata;
  return azId;
};
```

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

Tambahkan dependensi Powertools ke: `pom.xml`

```
<dependencies>
    <dependency>
        <groupId>software.amazon.lambda</groupId>
        <artifactId>powertools-lambda-metadata</artifactId>
        <version>2.10.0</version>
    </dependency>
</dependencies>
```

Gunakan klien metadata di handler Anda:

**Example Mengambil ID AZ dengan Powertools (Java)**  

```
import software.amazon.lambda.powertools.metadata.LambdaMetadata;
import software.amazon.lambda.powertools.metadata.LambdaMetadataClient;

public class App implements RequestHandler<Object, String> {

    @Override
    public String handleRequest(Object input, Context context) {
        LambdaMetadata metadata = LambdaMetadataClient.get();
        String azId = metadata.getAvailabilityZoneId(); // e.g., "use1-az1"

        return "{\"azId\": \"" + azId + "\"}";
    }
}
```

------
#### [ .NET ]

Instal paket Powertools:

```
dotnet add package AWS.Lambda.Powertools.Metadata
```

Gunakan kelas metadata di handler Anda:

**Example Mengambil ID AZ dengan Powertools (.NET)**  

```
using AWS.Lambda.Powertools.Metadata;

public class Function
{
    public string Handler(object input, ILambdaContext context)
    {
        var azId = LambdaMetadata.AvailabilityZoneId;
        return $"Running in AZ: {azId}";
    }
}
```

------
#### [ All Runtimes ]

Semua runtime Lambda mendukung titik akhir metadata, termasuk runtime kustom dan gambar kontainer. Gunakan contoh berikut untuk mengakses API metadata langsung dari fungsi Anda menggunakan variabel lingkungan yang secara otomatis ditetapkan Lambda di lingkungan eksekusi.

**Example Mengakses titik akhir metadata secara langsung**  

```
# Variables are automatically set by Lambda
METADATA_ENDPOINT="http://${AWS_LAMBDA_METADATA_API}/2026-01-15/metadata/execution-environment"

# Make the request
RESPONSE=$(curl -s -H "Authorization: Bearer ${AWS_LAMBDA_METADATA_TOKEN}" "$METADATA_ENDPOINT")

# Parse the AZ ID
AZ_ID=$(echo "$RESPONSE" | jq -r '.AvailabilityZoneID')

echo "Function is running in AZ ID: $AZ_ID"
```

------

## Memahami Zona Ketersediaan IDs
<a name="metadata-endpoint-az-ids"></a>

AZ IDs (misalnya,`use1-az1`) selalu merujuk ke lokasi fisik yang sama di semua AWS akun, sementara nama AZ (misalnya,`us-east-1a`) dapat dipetakan ke infrastruktur fisik yang berbeda di setiap AWS akun di wilayah tertentu. Untuk informasi selengkapnya, lihat [AZ IDs untuk konsistensi lintas akun](https://docs.aws.amazon.com/global-infrastructure/latest/regions/az-ids.html).

**Mengonversi ID AZ ke nama AZ:**

Untuk mengonversi ID AZ ke nama AZ, gunakan Amazon EC2 API [DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html). Untuk menggunakan API ini, tambahkan `ec2:DescribeAvailabilityZones` izin ke peran eksekusi fungsi Anda.

## Referensi API
<a name="metadata-endpoint-api-reference"></a>

### Variabel-variabel lingkungan
<a name="metadata-endpoint-env-vars"></a>

Lambda secara otomatis menetapkan variabel lingkungan berikut di setiap lingkungan eksekusi:
+ `AWS_LAMBDA_METADATA_API`— Alamat server metadata dalam format `{ipv4_address}:{port}` (misalnya,`169.254.100.1:9001`).
+ `AWS_LAMBDA_METADATA_TOKEN`— Token otentikasi unik untuk lingkungan eksekusi saat ini. Lambda menghasilkan token ini secara otomatis saat inisialisasi. Sertakan dalam semua permintaan API metadata.

### Titik akhir
<a name="metadata-endpoint-url"></a>

`GET http://${AWS_LAMBDA_METADATA_API}/2026-01-15/metadata/execution-environment`

### Permintaan
<a name="metadata-endpoint-request"></a>

**Header yang diperlukan:**
+ `Authorization`— Nilai token dari variabel `AWS_LAMBDA_METADATA_TOKEN` lingkungan dengan skema Bearer:`Bearer <token>`. Otentikasi berbasis token ini memberikan perlindungan mendalam terhadap kerentanan Pemalsuan Permintaan Sisi Server (SSRF). Setiap lingkungan eksekusi menerima token unik yang dihasilkan secara acak saat inisialisasi.

### Respons
<a name="metadata-endpoint-response"></a>

**Status:** `200 OK`

**Tipe Konten:** `application/json`

**Kontrol Cache:** `private, max-age=43200, immutable`

Responsnya tidak dapat diubah dalam lingkungan eksekusi. Klien harus menyimpan respons dan menghormati `Cache-Control` TTL. Untuk SnapStart fungsi, TTL dikurangi selama inisialisasi sehingga klien menyegarkan metadata setelah pemulihan ketika lingkungan eksekusi mungkin berada di AZ yang berbeda. Jika Anda menggunakan Powertools, caching dan SnapStart invalidasi ditangani secara otomatis.

**Tubuh:**

```
{
  "AvailabilityZoneID": "use1-az1"
}
```

`AvailabilityZoneID`Bidang berisi pengenal unik untuk Availability Zone tempat lingkungan eksekusi berjalan.

**catatan**  
Bidang tambahan dapat ditambahkan ke respons di pembaruan masa depan. Klien harus mengabaikan bidang yang tidak dikenal dan tidak gagal jika bidang baru muncul.

### Tanggapan kesalahan
<a name="metadata-endpoint-errors"></a>
+ **401 Tidak Sah** — `Authorization` Header tidak ada atau berisi token yang tidak valid. Verifikasi Anda lewat`Bearer ${AWS_LAMBDA_METADATA_TOKEN}`.
+ **405 Metode Tidak Diizinkan** - Metode permintaan tidak`GET`.
+ **500 Kesalahan Server Internal - Kesalahan** pemrosesan sisi server.