Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
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 yang disediakan runtime Node.js asli.Akhiri aliran dengan anggun untuk memastikan bahwa semua pemrosesan data selesai.
Mengkonfigurasi fungsi handler untuk mengalirkan respons
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
pipeline()
metode ini.
contoh handler yang mendukung streaming respons
const pipeline = require("util").promisify(require("stream").pipeline);
const { Readable } = require('stream');
exports.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 pipeline()
pipeline()
memastikan bahwa aliran yang dapat ditulis tidak kewalahan oleh aliran yang dapat dibaca lebih cepat.
Mengakhiri aliran
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()
ataupipe()
.
contoh Contoh mengakhiri aliran dengan pipeline ()
const pipeline = require("util").promisify(require("stream").pipeline);
exports.handler = awslambda.streamifyResponse(async (event, responseStream, _context) => {
await pipeline(requestStream, responseStream);
});
contoh Contoh mengakhiri aliran tanpa pipeline ()
exports.handler = awslambda.streamifyResponse(async (event, responseStream, _context) => {
responseStream.write("Hello ");
responseStream.write("world ");
responseStream.write("from ");
responseStream.write("Lambda!");
responseStream.end();
});