

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

# Siapkan integrasi proxy Lambda dengan streaming respons payload di API Gateway
<a name="response-transfer-mode-lambda"></a>

Anda dapat melakukan streaming respons fungsi Lambda untuk meningkatkan kinerja time to first byte (TTFB) dan mengirim sebagian tanggapan kembali ke klien saat tersedia. API Gateway mengharuskan Anda menggunakan API [InvokeWithResponseStream](https://docs.aws.amazon.com/lambda/latest/api/API_InvokeWithResponseStream.html)Lambda untuk menjalankan fungsi Lambda Anda. API Gateway meneruskan objek peristiwa ke fungsi Lambda. Fungsi backend Lambda mem-parsing data permintaan yang masuk untuk menentukan respons yang dikembalikan. Agar API Gateway dapat melakukan streaming output Lambda, fungsi Lambda harus menampilkan [format](#response-transfer-mode-lambda-format) yang diperlukan oleh API Gateway.

## Perbedaan integrasi proxy Lambda antara mode transfer respons streaming dan buffer
<a name="response-transfer-mode-lambda-comparison"></a>

Daftar berikut menjelaskan perbedaan antara integrasi proxy Lambda dan integrasi proxy Lambda untuk streaming respons:
+ API Gateway menggunakan [InvokeWithResponseStream](https://docs.aws.amazon.com/lambda/latest/api/API_InvokeWithResponseStream.html)API untuk menjalankan integrasi proxy Lambda untuk streaming respons. Ini menghasilkan URI yang berbeda, yaitu sebagai berikut:

  ```
  arn:aws:apigateway:{{us-west-1}}:lambda:path/2021-11-15/functions/arn:aws:lambda:{{us-west-1}}:111122223333:function:my-function-name/response-streaming-invocations
  ```

  ARN ini menggunakan tanggal yang berbeda untuk versi API dan tindakan layanan yang berbeda dibandingkan dengan integrasi proxy Lambda.

  Jika Anda menggunakan konsol API Gateway untuk streaming respons, konsol menggunakan URI yang benar untuk Anda.
+ Dalam integrasi proxy Lambda, API Gateway mengirimkan respons ke klien hanya setelah menerima respons penuh dari Lambda. Dalam integrasi proxy Lambda untuk streaming respons, API Gateway memulai aliran muatan setelah menerima metadata dan pembatas yang valid dari Lambda. 
+ Integrasi proxy Lambda untuk streaming respons menggunakan format input yang sama dengan integrasi proxy, tetapi memerlukan format output yang berbeda.

## Format integrasi proxy Lambda untuk streaming respons
<a name="response-transfer-mode-lambda-format"></a>

Saat API Gateway memanggil fungsi Lambda dengan streaming respons, format input sama dengan format input fungsi Lambda untuk integrasi proxy. Untuk informasi selengkapnya, lihat [Format input fungsi Lambda untuk integrasi proxy](set-up-lambda-proxy-integrations.md#api-gateway-simple-proxy-for-lambda-input-format). 

Saat Lambda mengalirkan respons ke API Gateway, respons harus mematuhi format berikut. Format ini menggunakan pembatas untuk memisahkan metadata JSON dan muatan mentah. Dalam hal ini, data payload dialirkan saat ditransmisikan oleh fungsi Lambda streaming Anda:

```
{
  "headers": {"{{headerName}}": "{{headerValue}}", ...},
  "multiValueHeaders": { "{{headerName}}": ["{{headerValue}}", "{{headerValue2}}", ...], ... },
  "cookies" : ["{{cookie1}}", "{{cookie2}}"],
  "statusCode": {{httpStatusCode}}
}<DELIMITER>{{PAYLOAD1 | PAYLOAD2 | PAYLOAD3}}
```

Dalam output:
+ `statusCode`Tombol `headers``multiValueHeaders`,`cookies`, dan dapat tidak ditentukan jika tidak ada header respons tambahan yang akan dikembalikan.
+ `headers`Kuncinya hanya dapat berisi header nilai tunggal.
+ Output mengharapkan header berisi salah satu atau`Transfer-Encoding: chunked`. `Content-length: {{number}}` Jika fungsi Anda tidak mengembalikan salah satu header ini, API Gateway akan ditambahkan `Transfer-Encoding: chunked` ke header respons.
+ `multiValueHeaders`Kuncinya dapat berisi header multi-nilai serta header nilai tunggal. Anda dapat menggunakan `multiValueHeaders` kunci untuk menentukan semua header tambahan Anda, termasuk yang bernilai tunggal.
+ Jika Anda menentukan nilai untuk keduanya `headers` dan`multiValueHeaders`, API Gateway menggabungkannya ke dalam satu daftar. Jika pasangan kunci-nilai yang sama ditentukan di keduanya, hanya nilai dari yang `multiValueHeaders` akan muncul dalam daftar gabungan.
+ Metadata harus JSON yang valid. Hanya`headers`,`multiValueHeaders`, `cookies` dan `statusCode` kuncinya didukung.
+ Anda harus memberikan pembatas setelah metadata JSON. Pembatas harus 8 byte nol dan harus muncul dalam 16KB pertama data aliran.
+ API Gateway tidak memerlukan format khusus untuk payload respons metode.

Jika Anda menggunakan URL fungsi untuk melakukan streaming fungsi Lambda Anda, Anda harus memodifikasi input dan output fungsi Lambda Anda untuk memenuhi persyaratan ini.

Jika output fungsi Lambda Anda tidak mematuhi persyaratan format ini, API Gateway mungkin masih menjalankan fungsi Lambda Anda. Tabel berikut menunjukkan kombinasi setelan permintaan integrasi API dan kode fungsi Lambda yang didukung oleh API Gateway. Ini termasuk kombinasi yang didukung untuk mode transfer respons buffer.


| Mode transfer respons | Kode fungsi mematuhi format yang diperlukan | Lambda memanggil API | Didukung oleh API Gateway | 
| --- | --- | --- | --- | 
| Streaming | Ya |  [InvokeWithResponseStream](https://docs.aws.amazon.com/lambda/latest/api/API_InvokeWithResponseStream.html) | Ya. API Gateway mengalirkan respons Anda. | 
| Streaming | Tidak |  [InvokeWithResponseStream](https://docs.aws.amazon.com/lambda/latest/api/API_InvokeWithResponseStream.html) | Tidak. API Gateway memanggil fungsi Lambda Anda dan mengembalikan respons kesalahan 500. | 
| Streaming | Ya |  [Memohon](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html) | Tidak. API Gateway tidak mendukung konfigurasi integrasi ini. | 
| Streaming | Tidak |  [Memohon](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html) | Tidak. API Gateway tidak mendukung konfigurasi integrasi ini. | 
| Buffer | Ya |  [InvokeWithResponseStream](https://docs.aws.amazon.com/lambda/latest/api/API_InvokeWithResponseStream.html) | Tidak. API Gateway tidak mendukung konfigurasi integrasi ini. | 
| Buffer | Tidak |  [InvokeWithResponseStream](https://docs.aws.amazon.com/lambda/latest/api/API_InvokeWithResponseStream.html) | Tidak. API Gateway tidak mendukung konfigurasi integrasi ini. | 
| Buffer | Ya |  [Memohon](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html) | API Gateway mengembalikan header HTTP dan kode status tetapi bukan badan respons. | 
| Buffer | Tidak |  [Memohon](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html) | Ya. Ini adalah integrasi proxy Lambda. Untuk informasi selengkapnya, lihat Integrasi [proxy Lambda](set-up-lambda-proxy-integrations.md). | 