Mengirimkan aliran Amazon Data Firehose ke Apache Iceberg Tables di Amazon S3 sedang dalam pratinjau dan dapat berubah sewaktu-waktu.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengubah data di Amazon Data Firehose
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
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 ProcessingConfigurationparameter CreateDeliveryStreamatau UpdateDestinationAPIdengan yang ProcessorParameterdipanggil BufferSizeInMBs
danIntervalInSeconds
. Firehose kemudian memanggil fungsi Lambda yang ditentukan secara asinkron dengan setiap batch buffer menggunakan mode pemanggilan sinkron. AWS Lambda Data yang diubah 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.
Transformasi data dan model status
Semua catatan yang diubah dari Lambda harus berisi parameter berikut, atau Amazon Data Firehose menolaknya dan memperlakukannya sebagai kegagalan transformasi data.
Untuk Kinesis Data PUT Streams dan Langsung:
- 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), danProcessingFailed
(catatan tidak bisa ditransformasi). Jika rekaman memiliki statusOk
atauDropped
, Amazon Data Firehose menganggapnya berhasil diproses. Jika tidak, Amazon Data Firehose menganggapnya tidak berhasil diproses. - data
-
Muatan data yang ditransformasi, setelah enkode base64.
Berikut ini adalah contoh hasil keluaran Lambda:
{ "recordId":
"<recordId from the Lambda input>"
, "result": "Ok", "data":"<Base64 encoded Transformed data>"
}
Untuk Amazon MSK
- 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), danProcessingFailed
(catatan tidak bisa ditransformasi). Jika rekaman memiliki statusOk
atauDropped
, Firehose menganggapnya berhasil diproses. Jika tidak, Firehose menganggapnya tidak berhasil diproses. - KafkaRecordValue
-
Muatan data yang diubah, setelah enkode base64.
Berikut ini adalah contoh hasil keluaran Lambda:
{ "recordId":
"<recordId from the Lambda input>"
, "result": "Ok", "kafkaRecordValue":"<Base64 encoded Transformed data>"
}
Bekerja dengan cetak biru Lambda
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
Masuk ke AWS Management Console dan buka AWS Lambda konsol di https://console.aws.amazon.com/lambda/
. -
Pilih Buat fungsi, lalu pilih Gunakan cetak biru.
-
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. Untuk informasi tentang pemrosesan CloudWatch Log yang dikirim ke Firehose, lihat Menulis ke Firehose Menggunakan Log. CloudWatch
-
Mengonversi rekaman streaming Amazon Data Firehose dalam format syslog ke (Node.js) JSON
Cetak biru ini menunjukkan bagaimana Anda dapat mengonversi catatan masukan dalam format RFC3164 Syslog menjadi. JSON
Tanggal rilis terbaru: Nov, 2016.
Catatan rilis: tidak ada.
Untuk melihat cetak biru yang tersedia di AWS Serverless Application Repository
-
Kunjungi AWS Serverless Application Repository
. -
Pilih Jelajahi semua aplikasi.
-
Di bidang Aplikasi, cari dengan kata kunci
firehose
.
Anda juga dapat membuat fungsi Lambda tanpa menggunakan cetak biru. Lihat Memulai dengan AWS Lambda.
Menangani kegagalan transformasi data
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 atau. CreateDeliveryStreamUpdateDestination
API Untuk jenis kegagalan ini, Anda dapat mencatat kesalahan pemanggilan ke Amazon CloudWatch Logs. Untuk informasi selengkapnya, lihat Memantau Amazon Data Firehose Menggunakan Log CloudWatch .
Jika status transformasi data rekaman adalahProcessingFailed
, 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 di Panduan AWS Lambda Pengembang.
Jika transformasi data gagal, catatan yang tidak berhasil diproses dikirim ke bucket S3 Anda di folder processing-failed
. 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 HTTP kesalahan dikembalikan oleh Lambda.
errorMessage
-
Pesan kesalahan yang dihasilkan oleh Lambda.
attemptEndingTimestamp
-
Waktu Amazon Data Firehose berhenti mencoba pemanggilan Lambda.
rawData
-
Data catatan berenkode base64.
lambdaArn
-
Nama Sumber Daya Amazon (ARN) dari fungsi Lambda.
Memahami durasi pemanggilan Lambda
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 transformasi data
Pencadangan catatan sumber
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.