

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

# Lambda berfungsi sebagai target di VPC Lattice
<a name="lambda-functions"></a>

Anda dapat mendaftarkan fungsi Lambda sebagai target dengan grup target VPC Lattice, dan mengonfigurasi aturan listener untuk meneruskan permintaan ke grup target untuk fungsi Lambda Anda. Ketika layanan meneruskan permintaan ke grup target dengan fungsi Lambda sebagai target, layanan akan memanggil fungsi Lambda Anda dan meneruskan konten permintaan ke fungsi Lambda, dalam format JSON.

**Batasan**
+ Fungsi Lambda dan kelompok target harus dalam akun dan di wilayah yang sama.
+ Ukuran maksimum badan permintaan yang dapat Anda kirim ke fungsi Lambda adalah 6 MB.
+ Ukuran maksimum respons JSON yang dapat dikirim oleh fungsi Lambda adalah 6 MB.
+ Protokol harus HTTP atau HTTPS.

## Siapkan fungsi Lambda
<a name="prepare-lambda-function"></a>

Rekomendasi berikut berlaku jika Anda menggunakan fungsi Lambda Anda dengan layanan VPC Lattice.

**Izin untuk mengaktifkan fungsi Lambda**  
Saat Anda membuat grup target dan mendaftarkan fungsi Lambda menggunakan Konsol Manajemen AWS atau, AWS CLI VPC Lattice menambahkan izin yang diperlukan ke kebijakan fungsi Lambda Anda atas nama Anda. 

Anda juga dapat menambahkan izin sendiri menggunakan panggilan API berikut:

```
aws lambda add-permission \
  --function-name lambda-function-arn-with-alias-name \ 
  --statement-id vpc-lattice \
  --principal vpc-lattice.amazonaws.com \
  --action lambda:InvokeFunction \
  --source-arn target-group-arn
```

**Versioning fungsi Lambda**  
Anda dapat mendaftarkan satu fungsi Lambda per kelompok target. Untuk memastikan bahwa Anda dapat mengubah fungsi Lambda Anda dan bahwa layanan VPC Lattice selalu memanggil versi fungsi Lambda saat ini, buat alias fungsi dan sertakan alias dalam fungsi ARN saat Anda mendaftarkan fungsi Lambda dengan layanan VPC Lattice. *Untuk informasi selengkapnya, lihat [Versi fungsi Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) dan [Membuat alias untuk fungsi Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) di Panduan Pengembang.AWS Lambda *

## Buat grup target untuk fungsi Lambda
<a name="register-lambda-function"></a>

Buat grup target, yang digunakan dalam routing permintaan. Jika konten permintaan cocok dengan aturan listener dengan tindakan untuk meneruskannya ke grup target ini, layanan VPC Lattice akan memanggil fungsi Lambda terdaftar.

**Untuk membuat grup target dan mendaftarkan fungsi Lambda menggunakan konsol**

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

1. **Pada panel navigasi, di bawah **VPC** Lattice, pilih Grup target.**

1. Pilih**Buat grup target**.

1. Untuk**Pilih jenis target**Pilih**Fungsi Lambda**.

1. Untuk **Name**, masukkan nama untuk grup target.

1. Untuk **versi struktur acara Lambda, pilih versi**. Untuk informasi selengkapnya, lihat [Menerima acara dari layanan VPC Lattice](#receive-event-from-service).

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

1. Pilih **Berikutnya**.

1. Untuk**Fungsi Lambda**Lakukan salah satu langkah berikut:
   + Pilih fungsi Lambda yang ada.
   + Buat fungsi Lambda baru dan pilih.
   + Daftarkan fungsi Lambda nanti.

1. Pilih**Buat grup target**.

**Untuk membuat grup target dan mendaftarkan fungsi Lambda menggunakan AWS CLI**  
Gunakan perintah [create-target-group](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/create-target-group.html)dan [daftar-target](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/register-targets.html).

## Menerima acara dari layanan VPC Lattice
<a name="receive-event-from-service"></a>

Layanan VPC Lattice mendukung pemanggilan Lambda untuk permintaan melalui HTTP dan HTTPS. Layanan mengirimkan acara dalam format JSON, dan menambahkan `X-Forwarded-For` header ke setiap permintaan.

**Enkode Base64**  
Layanan Base64 mengkodekan badan jika `content-encoding` header ada dan jenis konten bukan salah satu dari yang berikut:
+ `text/*`
+ `application/json`
+ `application/xml`
+ `application/javascript`

Jika`content-encoding`header tidak hadir, encoding Base64 tergantung pada jenis konten. Untuk jenis konten di atas, layanan mengirimkan badan apa adanya, tanpa pengkodean Base64.

**Format struktur acara**  
Saat membuat atau memperbarui jenis grup target`LAMBDA`, Anda dapat menentukan versi struktur acara yang diterima fungsi Lambda Anda. Versi yang mungkin adalah `V1` dan`V2`.<a name="event-structure-v2"></a>

**Example Contoh acara: V2**  

```
{
    "version": "2.0",
    "path": "/?query1=value1&query2=value2",
    "method": "GET|POST|HEAD|...",
    "headers": {
        "header-key": ["header-value", ...],
        ...
    },    
    "queryStringParameters": {
        "key": ["value", ...]
    },
    "body": "request-body",
    "isBase64Encoded": true|false,
    "requestContext": {
        "serviceNetworkArn": "arn:aws:vpc-lattice:region:123456789012:servicenetwork/sn-0bf3f2882e9cc805a",
        "serviceArn": "arn:aws:vpc-lattice:region:123456789012:service/svc-0a40eebed65f8d69c",
        "targetGroupArn": "arn:aws:vpc-lattice:region:123456789012:targetgroup/tg-6d0ecf831eec9f09",
        "identity": {
            "sourceVpcArn": "arn:aws:ec2:region:123456789012:vpc/vpc-0b8276c84697e7339",
            "type": "AWS_IAM",
            "principal": "arn:aws:iam::123456789012:assumed-role/my-role/my-session",
            "principalOrgID": "o-50dc6c495c0c9188",
            "sessionName": "i-0c7de02a688bde9f7",
            "x509IssuerOu": "string",
            "x509SanDns": "string",
            "x509SanNameCn": "string",
            "x509SanUri": "string",
            "x509SubjectCn": "string"
        },
        "region": "region",
        "timeEpoch": "1690497599177430"
    }
}
```  
`body`  
Tubuh permintaan. Hadir hanya jika protokolnya HTTP, HTTPS, atau gRPC.  
`headers`  
Header HTTP dari permintaan. Hadir hanya jika protokolnya HTTP, HTTPS, atau gRPC.  
`identity`  
Informasi identitas. Berikut ini adalah bidang yang mungkin.  
+ `principal`— Prinsipal yang diautentikasi. Hadir hanya jika AWS otentikasi berhasil.
+ `principalOrgID`— ID organisasi untuk prinsipal yang diautentikasi. Hadir hanya jika AWS otentikasi berhasil.
+ `sessionName`— Nama sesi yang diautentikasi. Hadir hanya jika AWS otentikasi berhasil.
+ `sourceVpcArn`— ARN dari VPC tempat permintaan berasal. Hadir hanya jika sumber VPC dapat diidentifikasi.
+ `type`— Nilainya adalah `AWS_IAM` jika kebijakan autentikasi digunakan dan AWS otentikasi berhasil.
Jika kredensyal Roles Anywhere digunakan dan otentikasi berhasil, berikut ini adalah bidang yang memungkinkan.  
+ `x509IssuerOu`— Penerbit (OU).
+ `x509SanDns`— Nama alternatif subjek (DNS).
+ `x509SanNameCn`— Nama alternatif penerbit (nama/CN).
+ `x509SanUri`— Nama alternatif subjek (URI).
+ `x509SubjectCn`Nama Subjek (CN)  
`isBase64Encoded`  
Menunjukkan apakah tubuh itu dikodekan base64. Hadir hanya jika protokolnya HTTP, HTTPS, atau gRPC dan badan permintaan belum berupa string.  
`method`  
Metode HTTP permintaan. Hadir hanya jika protokolnya HTTP, HTTPS, atau gRPC.  
`path`  
Jalur permintaan dari klien yang menyertakan parameter string kueri. Hadir hanya jika protokolnya HTTP, HTTPS, atau gRPC.  
`queryStringParameters`  
Parameter string kueri HTTP. Hadir hanya jika protokolnya HTTP, HTTPS, atau gRPC.  
`serviceArn`  
ARN dari layanan yang menerima permintaan.  
`serviceNetworkArn`  
ARN dari jaringan layanan yang memberikan permintaan.  
`targetGroupArn`  
ARN dari kelompok sasaran yang menerima permintaan.  
`timeEpoch`  
Waktu, dalam mikrodetik.<a name="event-structure-v1"></a>

**Example Contoh acara: V1**  

```
{
    "raw_path": "/path/to/resource?query1=value1&query2=value2",
    "method": "GET|POST|HEAD|...",
    "headers": {"header-key": "header-value", ... },
    "query_string_parameters": {"key": "value", ...},
    "body": "request-body",
    "is_base64_encoded": true|false
}
```

## Menanggapi layanan VPC Lattice
<a name="respond-to-service"></a>

Respon dari fungsi Lambda Anda harus mencakup status encoding Base64, kode status, dan header. Anda bisa menghilangkan bagian tubuhnya.

Untuk memasukkan konten biner dalam tubuh respon, Anda harus mengkodekan Base64 konten dan mengatur`isBase64Encoded`ke`true`. Layanan menerjemahkan konten untuk mengambil konten biner dan mengirimkannya ke klien di badan respons HTTP.

Layanan VPC Lattice tidak menghormati hop-by-hop header, seperti atau. `Connection` `Transfer-Encoding` Anda dapat menghilangkan `Content-Length` header karena layanan menghitungnya sebelum mengirim tanggapan ke klien.

Berikut ini adalah contoh respon dari fungsi Lambda:

```
{
    "isBase64Encoded": false,
    "statusCode": 200,
    "headers": {
        "Set-cookie": "cookies",
        "Content-Type": "application/json"
    },
    "body": "Hello from Lambda (optional)"
}
```

## Header nilai ganda
<a name="multi-value-headers"></a>

VPC Lattice mendukung permintaan dari klien atau tanggapan dari fungsi Lambda yang berisi header dengan beberapa nilai atau berisi header yang sama beberapa kali. VPC Lattice meneruskan semua nilai ke target.

Dalam contoh berikut, ada dua header bernama header1 dengan nilai yang berbeda.

```
header1 = value1
header1 = value2
```

Dengan struktur peristiwa V2, VPC Lattice mengirimkan nilai dalam daftar. Contoh:

```
"header1": ["value1", "value2"]
```

Dengan struktur peristiwa V1, VPC Lattice menggabungkan nilai-nilai menjadi satu string. Contoh:

```
"header1": "value1, value2"
```

## Parameter string kueri multi-nilai
<a name="multi-value-string-parameters"></a>

VPC Lattice mendukung parameter kueri dengan beberapa nilai untuk kunci yang sama.

Dalam contoh berikut, ada dua parameter bernama QS1 dengan nilai yang berbeda.

```
http://www.example.com?&QS1=value1&QS1=value2
```

Dengan struktur peristiwa V2, VPC Lattice mengirimkan nilai dalam daftar. Contoh:

```
"QS1": ["value1", "value2"]
```

Dengan struktur peristiwa V1, VPC Lattice menggunakan nilai terakhir yang diteruskan. Contoh:

```
"QS1": "value2"
```

## Deregristrasi fungsi Lambda
<a name="deregister-lambda-function"></a>

Jika Anda tidak perlu lagi mengirim lalu lintas ke fungsi Lambda Anda, Anda dapat membatalkan pendaftarannya. Setelah Anda membatalkan pendaftaran fungsi Lambda, permintaan dalam penerbangan gagal dengan galat HTTP 5XX.

Untuk mengganti fungsi Lambda, kami sarankan Anda membuat grup target baru, mendaftarkan fungsi baru dengan kelompok target baru, dan memperbarui aturan pendengar untuk menggunakan kelompok target baru bukan yang sudah ada.

**Untuk membatalkan pendaftaran fungsi Lambda menggunakan konsol**

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

1. **Pada panel navigasi, di bawah **VPC** Lattice, pilih Grup target.**

1. Pilih nama grup target untuk menampilkan laman detailnya.

1. Pada tab **Target**, pilih**Deregister**.

1. Saat diminta konfirmasi, masukkan **confirm** lalu pilih **Deregister**.

**Untuk membatalkan pendaftaran fungsi Lambda menggunakan AWS CLI**  
Gunakan perintah [Target deregister](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/deregister-targets.html).