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
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 InvokeWithResponseStreamLambda 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 yang diperlukan oleh API Gateway.
Perbedaan integrasi proxy Lambda antara mode transfer respons streaming dan buffer
Daftar berikut menjelaskan perbedaan antara integrasi proxy Lambda dan integrasi proxy Lambda untuk streaming respons:
-
API Gateway menggunakan InvokeWithResponseStreamAPI 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-invocationsARN 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
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.
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:
-
statusCodeTombolheadersmultiValueHeaders,cookies, dan dapat tidak ditentukan jika tidak ada header respons tambahan yang akan dikembalikan. -
headersKuncinya hanya dapat berisi header nilai tunggal. -
Output mengharapkan header berisi salah satu atau
Transfer-Encoding: chunked.Content-length:Jika fungsi Anda tidak mengembalikan salah satu header ini, API Gateway akan ditambahkannumberTransfer-Encoding: chunkedke header respons. -
multiValueHeadersKuncinya dapat berisi header multi-nilai serta header nilai tunggal. Anda dapat menggunakanmultiValueHeaderskunci untuk menentukan semua header tambahan Anda, termasuk yang bernilai tunggal. -
Jika Anda menentukan nilai untuk keduanya
headersdanmultiValueHeaders, API Gateway menggabungkannya ke dalam satu daftar. Jika pasangan kunci-nilai yang sama ditentukan di keduanya, hanya nilai dari yangmultiValueHeadersakan muncul dalam daftar gabungan. -
Metadata harus JSON yang valid. Hanya
headers,multiValueHeaders,cookiesdanstatusCodekuncinya 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 |
Ya. API Gateway mengalirkan respons Anda. |
|
|
Streaming |
Tidak |
Tidak. API Gateway memanggil fungsi Lambda Anda dan mengembalikan respons kesalahan 500. |
|
|
Streaming |
Ya |
Tidak. API Gateway tidak mendukung konfigurasi integrasi ini. |
|
|
Streaming |
Tidak |
Tidak. API Gateway tidak mendukung konfigurasi integrasi ini. |
|
|
Buffer |
Ya |
Tidak. API Gateway tidak mendukung konfigurasi integrasi ini. |
|
|
Buffer |
Tidak |
Tidak. API Gateway tidak mendukung konfigurasi integrasi ini. |
|
|
Buffer |
Ya |
API Gateway mengembalikan header HTTP dan kode status tetapi bukan badan respons. |
|
|
Buffer |
Tidak |
Ya. Ini adalah integrasi proxy Lambda. Untuk informasi selengkapnya, lihat Integrasi proxy Lambda. |