Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Saat Anda mengatur streaming payload respons, Anda menentukan mode transfer dalam permintaan integrasi sumber daya Anda. Anda mengonfigurasi setelan ini dalam permintaan integrasi untuk mengontrol perilaku API Gateway sebelum dan selama respons integrasi.
Contoh fungsi Lambda untuk streaming respons
Fungsi Lambda Anda harus mematuhi. Format integrasi proxy Lambda untuk streaming respons Kami menyarankan Anda menggunakan salah satu dari tiga contoh fungsi Lambda untuk menguji streaming respons. Saat Anda membuat fungsi Lambda, pastikan untuk melakukan hal berikut:
-
Berikan batas waktu yang memadai untuk fungsi Anda. Kami menyarankan Anda mengonfigurasi batas waktu minimal 1 menit untuk mempelajari tentang streaming respons. Saat Anda membuat sumber daya produksi, pastikan batas waktu fungsi Lambda Anda mencakup siklus permintaan penuh. Untuk informasi selengkapnya, lihat Mengonfigurasi batas waktu fungsi Lambda.
-
Gunakan runtime Node.js terbaru.
Gunakan Wilayah tempat streaming respons Lambda tersedia.
- Using HttpResponseStream.from
-
Contoh kode berikut mengalirkan objek metadata JSON dan muatan kembali ke klien menggunakan awslambda.HttpResponseStream() metode tanpa menggunakan metode pipeline. Anda tidak perlu membuat pembatas. Untuk informasi selengkapnya, lihat Menulis fungsi Lambda yang mendukung streaming respons.
export const handler = awslambda.streamifyResponse(
async (event, responseStream, context) => {
const httpResponseMetadata = {
"statusCode": 200,
"headers": {
"x-foo": "bar"
},
"multiValueHeaders": {
"x-mv1": ["hello", "world"],
"Set-Cookie": ["c1=blue", "c2=red"]
}
};
responseStream = awslambda.HttpResponseStream.from(responseStream, httpResponseMetadata);
await new Promise(r => setTimeout(r, 1000)); // synthetic delay
responseStream.write("First payload ");
await new Promise(r => setTimeout(r, 1000)); // synthetic delay
responseStream.write("Final payload");
responseStream.end();
});
- Using the pipeline method
-
Lambda merekomendasikan bahwa ketika Anda menulis fungsi yang mendukung streaming respons, Anda menggunakan awslambda.streamifyResponse() dekorator yang disediakan runtime Node.js asli, dan metodenya. pipeline() Saat Anda menggunakan metode pipeline, Anda tidak perlu membuat pembatas, Lambda melakukan ini untuk Anda. Untuk informasi selengkapnya, lihat Menulis fungsi Lambda yang mendukung streaming respons.
Contoh kode berikut mengalirkan objek metadata JSON dan tiga muatan kembali ke klien.
import { pipeline } from 'node:stream/promises';
import { Readable } from 'node:stream';
export const handler = awslambda.streamifyResponse(
async (event, responseStream, context) => {
const httpResponseMetadata = {
statusCode: 200,
headers: {
"Content-Type": "text/plain",
"X-Custom-Header": "Example-Custom-Header"
}
};
responseStream = awslambda.HttpResponseStream.from(responseStream, httpResponseMetadata);
const dataStream = Readable.from(async function* () {
yield "FIRST payload\n";
await new Promise(r => setTimeout(r, 1000));
yield "SECOND payload\n";
await new Promise(r => setTimeout(r, 1000));
yield "THIRD payload\n";
await new Promise(r => setTimeout(r, 1000));
}());
await pipeline(dataStream, responseStream);
}
);
- Without using the pipeline method
-
Contoh kode berikut mengalirkan objek metadata JSON dan tiga muatan kembali ke klien tanpa menggunakan metode ini. awslambda.HttpResponseStream() Tanpa awslambda.HttpResponseStream() metode ini, Anda harus menyertakan pembatas 8 byte nol antara metadata dan payload.
export const handler = awslambda.streamifyResponse(async (event, response, ctx) => {
response.write('{"statusCode": 200, "headers": {"hdr-x": "val-x"}}');
response.write("\x00".repeat(8)); // DELIMITER
await new Promise(r => setTimeout(r, 1000));
response.write("FIRST payload");
await new Promise(r => setTimeout(r, 1000));
response.write("SECOND payload");
await new Promise(r => setTimeout(r, 1000));
response.write("FINAL payload");
response.end();
});
Buat integrasi proxy Lambda dengan streaming respons payload
Prosedur berikut menunjukkan cara membuat integrasi proxy Lambda dengan streaming respons payload. Gunakan contoh fungsi Lambda atau buat sendiri.
- Konsol Manajemen AWS
-
Untuk membuat integrasi proxy Lambda dengan streaming respons payload
-
Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway.
Pilih REST API.
Pilih Buat sumber daya.
Untuk Nama sumber daya, masukkan streaming.
Pilih Buat sumber daya.
Dengan sumber daya /streaming yang dipilih, pilih Create method.
Untuk jenis Metode, pilih APAPUN.
Untuk jenis Integrasi, pilih Lambda.
Pilih integrasi proxy Lambda.
Untuk mode transfer Respons, pilih Streaming.
Untuk fungsi Lambda, pilih nama fungsi Lambda Anda.
Konsol API Gateway secara otomatis menggunakan InvokeWithResponseStreamAPI untuk menjalankan fungsi Lambda. Anda bertanggung jawab untuk menulis fungsi Lambda yang mendukung streaming respons. Sebagai contoh, lihat Contoh fungsi Lambda untuk streaming respons.
Pilih metode Buat.
Setelah Anda membuat metode, terapkan API Anda.
Untuk men-deploy API Anda
Pilih Deploy API.
Untuk Stage, pilih New stage.
Untuk nama Panggung, masukkanprod.
(Opsional) Untuk Deskripsi, masukkan deskripsi.
Pilih Deploy.
- AWS CLI
-
Prosedur berikut menunjukkan cara mengimpor API baru dengan responseTransferMode set keSTREAM. Jika Anda memiliki API integrasi yang ada dan ingin memodifikasinyaresponseTransferMode, lihatPerbarui mode transfer respons untuk integrasi proxy Lambda.
Untuk membuat API baru dengan streaming respons payload
-
Salin file Open API berikut, lalu simpan sebagai fileResponseStreamDemoSwagger.yaml. Dalam file ini, responseTransferMode diatur keSTREAM, dan URI integrasi diatur kearn: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.
Ganti nama fungsi dari my-function fungsi berkemampuan streaming dan ganti kredensialnya dengan peran IAM yang memiliki kebijakan yang memungkinkan layanan apigateway memanggil fungsi Lambda.
openapi: "3.0.1"
info:
title: "ResponseStreamingDemo"
version: "2025-04-28T17:28:25Z"
servers:
- url: "{basePath}"
variables:
basePath:
default: "prod"
paths:
/lambda:
get:
x-amazon-apigateway-integration:
httpMethod: "POST"
uri: "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"
type: "aws_proxy"
timeoutInMillis: 90000
responseTransferMode: "STREAM"
credentials: "arn:aws:iam::111122223333:role/apigateway-lambda-role"
Alih-alih menyediakan peran IAM untuk kredensil, Anda dapat menggunakan perintah untuk Lambda add-permission untuk menambahkan izin berbasis sumber daya.
Gunakan import-rest-api perintah berikut untuk mengimpor definisi OpenAPI Anda:
aws apigateway import-rest-api \
--body 'fileb://~/ResponseStreamDemoSwagger.yaml' \
--parameters endpointConfigurationTypes=REGIONAL \
--region us-west-1
Gunakan create-deployment perintah berikut untuk menerapkan API baru Anda ke panggung:
aws apigateway create-deployment \
--rest-api-id a1b2c2 \
--stage-name prod \
--region us-west-1
Perbarui mode transfer respons untuk integrasi proxy Lambda
Prosedur berikut menunjukkan cara memperbarui mode transfer respons untuk integrasi proxy Lambda. Saat Anda mengubah mode transfer respons ke streaming, perbarui fungsi Lambda Anda sehingga mematuhi persyaratan untuk streaming respons. Gunakan contoh fungsi Lambda atau buat sendiri.
- Konsol Manajemen AWS
-
Untuk memperbarui mode transfer respons untuk integrasi proxy Lambda
-
Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway.
Pilih REST API.
Pilih metode.
Pada tab Permintaan integrasi, di bawah Pengaturan permintaan integrasi, pilih Edit.
Untuk mode transfer Respons, pilih Streaming.
Untuk fungsi Lambda, pilih nama fungsi Lambda Anda.
Pilih Simpan.
Setelah memperbarui metode, terapkan API Anda.
Untuk men-deploy API Anda
Pilih Deploy API.
Untuk Stage, pilih New stage.
Untuk nama Panggung, masukkanprod.
(Opsional) Untuk Deskripsi, masukkan deskripsi.
Pilih Deploy.
- AWS CLI
-
Perbarui fungsi Lambda Anda agar diaktifkan streaming.
Gunakan AWS CLI perintah berikut untuk memperbarui URI integrasi dan mode transfer respons integrasi Anda:
aws apigateway update-integration \
--rest-api-id a1b2c3 \
--resource-id aaa111 \
--http-method ANY \
--patch-operations "[{\"op\":\"replace\",\"path\":\"/uri\",\"value\":\"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\"}, {\"op\":\"replace\",\"path\":\"/responseTransferMode\",\"value\":\"STREAM\"}]" \
--region us-west-1
-
Menerapkan ulang API Anda agar perubahan diterapkan.