

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

# Mengubah data sumber di Amazon Data Firehose
<a name="data-transformation"></a>

Amazon Data Firehose dapat menjalankan fungsi Lambda Anda untuk mengubah data sumber yang masuk dan mengirimkan data yang diubah ke tujuan. Anda dapat mengaktifkan transformasi data Amazon Data Firehose saat membuat aliran Firehose.

## Memahami aliran transformasi data
<a name="data-transformation-flow"></a>

Saat Anda mengaktifkan transformasi data Firehose, Firehose menyangga data yang masuk. Petunjuk ukuran buffering berkisar antara 0,2 MB dan 3MB. Petunjuk ukuran buffering Lambda default adalah 1 MB untuk semua tujuan, kecuali Splunk dan Snowflake. Untuk Splunk dan Snowflake, petunjuk buffering default adalah 256 KB. Petunjuk interval buffering Lambda berkisar antara 0 dan 900 detik. Petunjuk interval buffering Lambda default adalah enam puluh detik untuk semua tujuan kecuali Snowflake. Untuk Snowflake, interval petunjuk buffering default adalah 30 detik. Untuk menyesuaikan ukuran buffering, atur [ProcessingConfiguration](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ProcessingConfiguration.html)parameter [CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html)atau [UpdateDestination](https://docs.aws.amazon.com/firehose/latest/APIReference/API_UpdateDestination.html)API dengan yang [ProcessorParameter](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ProcessorParameter.html)dipanggil `BufferSizeInMBs` dan`IntervalInSeconds`. Firehose kemudian memanggil fungsi Lambda yang ditentukan secara sinkron dengan setiap batch buffer menggunakan mode pemanggilan sinkron. AWS Lambda Data yang ditransformasikan dikirim dari Lambda ke Firehose. Firehose kemudian mengirimkannya ke tujuan ketika ukuran buffering tujuan yang ditentukan atau interval buffering tercapai, mana yang terjadi lebih dulu.

**penting**  
Mode pemanggilan sinkron Lambda memiliki batas ukuran muatan 6 MB untuk permintaan dan respons. Pastikan bahwa ukuran buffering Anda untuk mengirim permintaan ke fungsi tersebut kurang dari atau sama dengan 6 MB. Juga pastikan bahwa respons yang dihasilkan fungsi tidak melebihi 6 MB.

## Durasi pemanggilan Lambda
<a name="data-transformation-execution-duration"></a>

Amazon Data Firehose mendukung waktu pemanggilan Lambda hingga 5 menit. Jika fungsi Lambda membutuhkan waktu lebih dari 5 menit untuk diselesaikan, Anda mendapatkan kesalahan berikut: Firehose mengalami kesalahan batas waktu saat memanggil Lambda. AWS Waktu habis fungsi maksimum yang didukung adalah 5 menit.

Untuk informasi tentang apa yang Amazon Data Firehose lakukan jika terjadi kesalahan seperti itu, lihat. [Menangani kegagalan dalam transformasi data](data-transformation-failure-handling.md)

# Parameter yang diperlukan untuk transformasi data
<a name="data-transformation-status-model"></a>

Semua catatan yang diubah dari Lambda harus berisi parameter berikut, atau Amazon Data Firehose menolaknya dan memperlakukannya sebagai kegagalan transformasi data.

------
#### [ For Kinesis Data Streams and Direct PUT ]

Parameter berikut diperlukan untuk semua catatan yang diubah dari Lambda.
+ `recordId`— ID rekaman diteruskan dari Amazon Data Firehose ke Lambda selama pemanggilan. Catatan yang ditransformasi harus berisi ID catatan yang sama. Ketidakcocokan apa pun antara ID catatan asli dan ID catatan yang ditransformasi dianggap sebagai kegagalan transformasi data.
+ `result`— Status transformasi data catatan. Kemungkinan nilainya adalah: `Ok` (catatan berhasil ditransformasi), `Dropped` (catatan dihentikan dengan sengaja oleh logika pemrosesan Anda), dan `ProcessingFailed` (catatan tidak bisa ditransformasi). Jika rekaman memiliki status `Ok` atau`Dropped`, Amazon Data Firehose menganggapnya berhasil diproses. Jika tidak, Amazon Data Firehose menganggapnya tidak berhasil diproses.
+ `data`— Payload data yang diubah, setelah pengkodean base64.

  Berikut ini adalah contoh hasil keluaran Lambda:

  ```
   {
      "recordId": "<recordId from the Lambda input>",
      "result": "Ok",
      "data": "<Base64 encoded Transformed data>"
  }
  ```

------
#### [ For Amazon MSK ]

Parameter berikut diperlukan untuk semua catatan yang diubah dari Lambda.
+ `recordId`— ID rekaman diteruskan dari Firehose ke Lambda selama pemanggilan. Catatan yang ditransformasi harus berisi ID catatan yang sama. Ketidakcocokan apa pun antara ID catatan asli dan ID catatan yang ditransformasi dianggap sebagai kegagalan transformasi data.
+ `result`— Status transformasi data catatan. Kemungkinan nilainya adalah: `Ok` (catatan berhasil ditransformasi), `Dropped` (catatan dihentikan dengan sengaja oleh logika pemrosesan Anda), dan `ProcessingFailed` (catatan tidak bisa ditransformasi). Jika rekaman memiliki status `Ok` atau`Dropped`, Firehose menganggapnya berhasil diproses. Jika tidak, Firehose menganggapnya tidak berhasil diproses.
+ `KafkaRecordValue`— Payload data yang diubah, setelah pengkodean base64.

  Berikut ini adalah contoh hasil keluaran Lambda:

  ```
   {
      "recordId": "<recordId from the Lambda input>",
      "result": "Ok",
      "kafkaRecordValue": "<Base64 encoded Transformed data>"
  }
  ```

------

# Cetak biru Lambda yang didukung
<a name="lambda-blueprints"></a>

Cetak biru ini menunjukkan bagaimana Anda dapat membuat dan menggunakan fungsi AWS Lambda untuk mengubah data dalam aliran data Amazon Data Firehose Anda. 

**Untuk melihat cetak biru yang tersedia di konsol AWS Lambda**

1. Masuk ke Konsol Manajemen AWS dan buka AWS Lambda konsol di [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Pilih **Buat fungsi**, lalu pilih **Gunakan cetak biru**.

1. Di bidang **Cetak Biru, cari kata kunci `firehose` untuk menemukan cetak biru Amazon Data Firehose Lambda**.

Daftar cetak biru:
+ **Memproses catatan dikirim ke Amazon Data Firehose stream (Node.js, Python)**

  Cetak biru ini menunjukkan contoh dasar cara memproses data dalam aliran data Firehose Anda menggunakan Lambda. AWS 

  *Tanggal rilis terbaru:* November, 2016. 

  *Catatan rilis:* tidak ada.
+ ** CloudWatch Log Proses dikirim ke Firehose**

  Cetak biru ini sudah usang. Jangan gunakan cetak biru ini. Ini mungkin dikenakan biaya tinggi ketika data CloudWatch Log didekompresi lebih dari 6MB (batas Lambda). Untuk informasi tentang pemrosesan CloudWatch Log yang dikirim ke Firehose, lihat [Menulis ke Firehose Menggunakan](https://docs.aws.amazon.com/firehose/latest/dev/writing-with-cloudwatch-logs.html) Log. CloudWatch 
+ **Mengonversi catatan aliran Amazon Data Firehose dalam format syslog ke JSON (Node.js)**

  Cetak biru ini menunjukkan bagaimana Anda dapat mengonversi catatan input dalam format RFC3164 Syslog ke JSON. 

  *Tanggal rilis terbaru:* Nov, 2016. 

  *Catatan rilis:* tidak ada. 

**Untuk melihat cetak biru yang tersedia di AWS Serverless Application Repository**

1. Kunjungi [AWS Serverless Application Repository](https://aws.amazon.com/serverless/serverlessrepo).

1. Pilih **Jelajahi semua aplikasi**.

1. Di bidang **Aplikasi**, cari dengan kata kunci `firehose`.

Anda juga dapat membuat fungsi Lambda tanpa menggunakan cetak biru. Lihat [Memulai dengan AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html).

# Menangani kegagalan dalam transformasi data
<a name="data-transformation-failure-handling"></a>

Jika pemanggilan fungsi Lambda Anda gagal karena batas waktu jaringan atau karena Anda telah mencapai batas pemanggilan Lambda, Amazon Data Firehose akan mencoba ulang pemanggilan tiga kali secara default. Jika pemanggilan tidak berhasil, Amazon Data Firehose kemudian melewatkan kumpulan catatan itu. Catatan yang dilewati dianggap sebagai catatan yang tidak berhasil diproses. Anda dapat menentukan atau mengganti opsi coba lagi menggunakan API [CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html)atau`[UpdateDestination](https://docs.aws.amazon.com/firehose/latest/APIReference/API_UpdateDestination.html)`. Untuk jenis kegagalan ini, Anda dapat mencatat kesalahan pemanggilan ke Amazon CloudWatch Logs. Untuk informasi selengkapnya, lihat [Pantau Amazon Data Firehose Menggunakan Log CloudWatch](monitoring-with-cloudwatch-logs.md).

Jika status transformasi data rekaman adalah`ProcessingFailed`, Amazon Data Firehose memperlakukan catatan sebagai tidak berhasil diproses. Untuk jenis kegagalan ini, Anda dapat memancarkan log kesalahan ke Amazon CloudWatch Logs dari fungsi Lambda Anda. Untuk informasi selengkapnya, lihat [Mengakses CloudWatch Log Amazon AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions-logs.html) di *Panduan AWS Lambda Pengembang*.

Jika transformasi data gagal, catatan yang tidak berhasil diproses akan dikirimkan ke bucket S3 Anda di `processing-failed` folder. Catatan tersebut memiliki format berikut:

```
{
    "attemptsMade": "count",
    "arrivalTimestamp": "timestamp",
    "errorCode": "code",
    "errorMessage": "message",
    "attemptEndingTimestamp": "timestamp",
    "rawData": "data",
    "lambdaArn": "arn"
}
```

`attemptsMade`  
Jumlah permintaan pemanggilan yang dilakukan.

`arrivalTimestamp`  
Waktu rekaman itu diterima oleh Amazon Data Firehose.

`errorCode`  
Kode kesalahan HTTP dihasilkan oleh Lambda.

`errorMessage`  
Pesan kesalahan yang dihasilkan oleh Lambda.

`attemptEndingTimestamp`  
Waktu Amazon Data Firehose berhenti mencoba pemanggilan Lambda.

`rawData`  
Data catatan berenkode base64.

`lambdaArn`  
Amazon Resource Name (ARN) fungsi Lambda.

# Cadangkan catatan sumber
<a name="data-transformation-source-record-backup"></a>

Amazon Data Firehose dapat mencadangkan semua catatan yang belum diubah ke bucket S3 Anda secara bersamaan sambil mengirimkan catatan yang diubah ke tujuan. Anda dapat mengaktifkan cadangan catatan sumber saat membuat atau memperbarui aliran Firehose. Anda tidak dapat menonaktifkan pencadangan catatan sumber setelah Anda mengaktifkannya.