

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

# Menulis fungsi Lambda yang mendukung streaming respons
<a name="config-rs-write-functions"></a>

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. Objek `awslambda` global disediakan oleh lingkungan runtime Node.js Lambda.
+ Akhiri aliran dengan anggun untuk memastikan bahwa semua pemrosesan data selesai.

## Mengkonfigurasi fungsi handler untuk mengalirkan respons
<a name="config-rs-write-functions-handler"></a>

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`](https://nodesource.com/blog/understanding-streams-in-nodejs/). Seperti halnya aliran seperti itu, Anda harus menggunakan `pipeline()` metode ini.

**catatan**  
Objek `awslambda` global secara otomatis disediakan oleh runtime Node.js Lambda dan tidak diperlukan impor.

**Example handler yang mendukung streaming respons**  

```
import { pipeline } from 'node:stream/promises';
import { Readable } from 'node:stream';

export const 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 [https://nodejs.org/api/stream.html#streampipelinesource-transforms-destination-callback](https://nodejs.org/api/stream.html#streampipelinesource-transforms-destination-callback)sedapat mungkin. Menggunakan `pipeline()` memastikan bahwa aliran yang dapat ditulis tidak kewalahan oleh aliran yang dapat dibaca lebih cepat.

## Mengakhiri aliran
<a name="config-rs-write-functions-end"></a>

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()` atau`pipe()`.

Dimulai dengan Node.js 24, Lambda tidak lagi menunggu janji yang belum terselesaikan selesai setelah handler Anda kembali atau aliran respons berakhir. Jika fungsi Anda bergantung pada operasi asinkron tambahan, seperti pengatur waktu atau pengambilan, Anda harus `await` menggunakannya di handler Anda.

**Example Contoh mengakhiri aliran dengan pipeline ()**  

```
import { pipeline } from 'node:stream/promises';

export const handler = awslambda.streamifyResponse(async (event, responseStream, _context) => {
  await pipeline(requestStream, responseStream);
});
```

**Example Contoh mengakhiri aliran tanpa pipeline ()**  

```
export const handler = awslambda.streamifyResponse(async (event, responseStream, _context) => {
  responseStream.write("Hello ");
  responseStream.write("world ");
  responseStream.write("from ");
  responseStream.write("Lambda!");
  responseStream.end();
});
```