Menangani kegagalan pengiriman data - Amazon Data Firehose

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

Menangani kegagalan pengiriman data

Setiap tujuan Amazon Data Firehose memiliki penanganan kegagalan pengiriman datanya sendiri.

Saat menyiapkan aliran Firehose, untuk banyak tujuan seperti, Splunk OpenSearch, dan HTTP titik akhir, Anda juga menyiapkan bucket S3 tempat data yang gagal dikirimkan dapat dicadangkan. Untuk informasi selengkapnya tentang cara Firehose mencadangkan data jika pengiriman gagal, lihat bagian tujuan yang relevan di halaman ini. Untuk informasi selengkapnya tentang cara memberikan akses ke bucket S3 tempat data yang gagal dikirimkan dapat dicadangkan, lihat Memberikan Akses Firehose ke Tujuan Amazon S3. Ketika Firehose (a) gagal mengirimkan data ke tujuan streaming, dan (b) gagal menulis data ke bucket S3 cadangan untuk pengiriman yang gagal, Firehose secara efektif menghentikan pengiriman streaming hingga saat data dapat dikirim ke tujuan atau ditulis ke lokasi S3 cadangan.

Amazon S3

Pengiriman data ke bucket S3 Anda mungkin gagal karena berbagai alasan. Misalnya, bucket mungkin tidak ada lagi, IAM peran yang diasumsikan Amazon Data Firehose mungkin tidak memiliki akses ke bucket, jaringan gagal, atau kejadian serupa. Dalam kondisi ini, Amazon Data Firehose terus mencoba lagi hingga 24 jam hingga pengiriman berhasil. Waktu penyimpanan data maksimum Amazon Data Firehose adalah 24 jam. Jika pengiriman data gagal selama lebih dari 24 jam, data Anda akan hilang.

Pengiriman data ke bucket S3 Anda dapat gagal karena berbagai alasan, seperti:

  • Ember sudah tidak ada lagi.

  • IAMPeran yang diambil oleh Amazon Data Firehose tidak memiliki akses ke bucket.

  • Masalah jaringan.

  • Kesalahan S3, seperti HTTP 500s atau kegagalan lainnyaAPI.

Dalam kasus ini, Amazon Data Firehose akan mencoba lagi pengiriman:

  • DirectPut sumber: Percobaan ulang berlanjut hingga 24 jam.

  • Kinesis Data Streams MSK atau sumber Amazon: Percobaan ulang berlanjut tanpa batas, hingga kebijakan retensi yang ditentukan pada aliran.

Amazon Data Firehose mengirimkan catatan yang gagal ke bucket kesalahan S3 hanya jika pemrosesan Lambda atau konversi parket gagal. Skenario kegagalan lainnya akan menghasilkan upaya coba lagi terus menerus ke S3 hingga periode retensi tercapai. Ketika Firehose berhasil mengirimkan catatan ke S3, Firehose membuat file objek S3, dan dalam kasus kegagalan rekaman sebagian, secara otomatis mencoba ulang pengiriman dan memperbarui file objek S3 yang sama dengan catatan yang berhasil diproses.

Amazon Redshift

Untuk tujuan Amazon Redshift, Anda dapat menentukan durasi coba lagi (0—7200 detik) saat membuat aliran Firehose.

Pengiriman data ke klaster yang disediakan Amazon Redshift atau grup kerja Amazon Redshift Tanpa Server mungkin gagal karena beberapa alasan. Misalnya, Anda mungkin memiliki konfigurasi klaster yang salah dari aliran Firehose, klaster atau grup kerja yang sedang dalam pemeliharaan, atau kegagalan jaringan. Dalam kondisi ini, Amazon Data Firehose mencoba ulang untuk durasi waktu yang ditentukan dan melewatkan kumpulan objek Amazon S3 tertentu. Informasi objek yang dilewati dikirim ke bucket S3 Anda sebagai file manifes di folder errors/, yang dapat Anda gunakan untuk backfill manual. Untuk informasi tentang cara melakukan COPY data secara manual dengan file manifes, lihat Menggunakan Manifes untuk Menentukan File Data.

OpenSearch Layanan Amazon dan Tanpa OpenSearch Server

Untuk tujuan OpenSearch Layanan dan OpenSearch Tanpa Server, Anda dapat menentukan durasi coba lagi (0—7200 detik) selama pembuatan aliran Firehose.

Pengiriman data ke kluster OpenSearch Layanan atau pengumpulan OpenSearch Tanpa Server Anda mungkin gagal karena beberapa alasan. Misalnya, Anda mungkin memiliki klaster OpenSearch Layanan atau konfigurasi koleksi OpenSearch Tanpa Server yang salah dari aliran Firehose, kluster OpenSearch Layanan, atau koleksi OpenSearch Tanpa Server dalam pemeliharaan, kegagalan jaringan, atau peristiwa serupa. Dalam kondisi ini, Amazon Data Firehose mencoba ulang untuk durasi waktu yang ditentukan dan kemudian melewatkan permintaan indeks tertentu. Dokumen yang dilewati dikirim ke bucket S3 Anda di folder AmazonOpenSearchService_failed/, yang dapat Anda gunakan untuk backfill manual.

Untuk OpenSearch Layanan, setiap dokumen memiliki JSON format berikut:

{ "attemptsMade": "(number of index requests attempted)", "arrivalTimestamp": "(the time when the document was received by Firehose)", "errorCode": "(http error code returned by OpenSearch Service)", "errorMessage": "(error message returned by OpenSearch Service)", "attemptEndingTimestamp": "(the time when Firehose stopped attempting index request)", "esDocumentId": "(intended OpenSearch Service document ID)", "esIndexName": "(intended OpenSearch Service index name)", "esTypeName": "(intended OpenSearch Service type name)", "rawData": "(base64-encoded document data)" }

Untuk OpenSearch Tanpa Server, setiap dokumen memiliki format berikut: JSON

{ "attemptsMade": "(number of index requests attempted)", "arrivalTimestamp": "(the time when the document was received by Firehose)", "errorCode": "(http error code returned by OpenSearch Serverless)", "errorMessage": "(error message returned by OpenSearch Serverless)", "attemptEndingTimestamp": "(the time when Firehose stopped attempting index request)", "osDocumentId": "(intended OpenSearch Serverless document ID)", "osIndexName": "(intended OpenSearch Serverless index name)", "rawData": "(base64-encoded document data)" }

Splunk

Saat Amazon Data Firehose mengirim data ke Splunk, ia menunggu pengakuan dari Splunk. Jika terjadi kesalahan, atau pengakuan tidak tiba dalam periode batas waktu pengakuan, Amazon Data Firehose memulai penghitung durasi coba lagi. Kinesis Data Firehose terus mencoba kembali sampai durasi coba lagi berakhir. Setelah itu, Amazon Data Firehose menganggapnya sebagai kegagalan pengiriman data dan mencadangkan data ke bucket Amazon S3 Anda.

Setiap kali Amazon Data Firehose mengirimkan data ke Splunk, apakah itu upaya awal atau percobaan ulang, itu memulai ulang penghitung batas waktu pengakuan. Kinesis Data Firehose kemudian menunggu pengakuan tiba dari Splunk. Bahkan jika durasi percobaan ulang berakhir, Amazon Data Firehose masih menunggu pengakuan sampai menerimanya atau batas waktu pengakuan tercapai. Jika waktu pengakuan habis, Amazon Data Firehose memeriksa untuk menentukan apakah ada waktu tersisa di penghitung coba lagi. Jika ada waktu yang tersisa, Kinesis Data Firehose akan mencoba lagi dan mengulangi logika sampai menerima pengakuan atau sampai waktu coba lagi telah berakhir.

Kegagalan untuk menerima pengakuan bukan satu-satunya jenis kesalahan pengiriman data yang dapat terjadi. Untuk informasi tentang jenis kesalahan pengiriman data lainnya, lihat Kesalahan Pengiriman Data Splunk. Kesalahan pengiriman data memicu logika coba lagi jika durasi coba lagi lebih besar dari 0.

Berikut ini adalah contoh catatan kesalahan.

{ "attemptsMade": 0, "arrivalTimestamp": 1506035354675, "errorCode": "Splunk.AckTimeout", "errorMessage": "Did not receive an acknowledgement from HEC before the HEC acknowledgement timeout expired. Despite the acknowledgement timeout, it's possible the data was indexed successfully in Splunk. Amazon Data Firehose backs up in Amazon S3 data for which the acknowledgement timeout expired.", "attemptEndingTimestamp": 13626284715507, "rawData": "MiAyNTE2MjAyNzIyMDkgZW5pLTA1ZjMyMmQ1IDIxOC45Mi4xODguMjE0IDE3Mi4xNi4xLjE2NyAyNTIzMyAxNDMzIDYgMSA0MCAxNTA2MDM0NzM0IDE1MDYwMzQ3OTQgUkVKRUNUIE9LCg==", "EventId": "49577193928114147339600778471082492393164139877200035842.0" }

HTTPtujuan titik akhir

Saat Amazon Data Firehose mengirimkan data ke tujuan HTTP titik akhir, Amazon Data Firehose menunggu respons dari tujuan ini. Jika terjadi kesalahan, atau respons tidak tiba dalam periode batas waktu respons, Amazon Data Firehose memulai penghitung durasi coba lagi. Kinesis Data Firehose terus mencoba kembali sampai durasi coba lagi berakhir. Setelah itu, Amazon Data Firehose menganggapnya sebagai kegagalan pengiriman data dan mencadangkan data ke bucket Amazon S3 Anda.

Setiap kali Amazon Data Firehose mengirimkan data ke tujuan HTTP titik akhir, apakah itu upaya awal atau percobaan ulang, itu memulai ulang penghitung batas waktu respons. Kemudian menunggu respons tiba dari tujuan HTTP titik akhir. Bahkan jika durasi percobaan ulang berakhir, Amazon Data Firehose masih menunggu respons hingga menerimanya atau batas waktu respons tercapai. Jika waktu respons habis, Amazon Data Firehose memeriksa untuk menentukan apakah ada waktu tersisa di penghitung coba lagi. Jika ada waktu yang tersisa, Kinesis Data Firehose akan mencoba lagi dan mengulangi logika sampai menerima respons atau sampai waktu coba lagi telah berakhir.

Kegagalan untuk menerima respons bukan satu-satunya jenis kesalahan pengiriman data yang dapat terjadi. Untuk informasi tentang jenis kesalahan pengiriman data lainnya, lihat Kesalahan Pengiriman Data HTTP Titik Akhir

Berikut ini adalah contoh catatan kesalahan.

{ "attemptsMade":5, "arrivalTimestamp":1594265943615, "errorCode":"HttpEndpoint.DestinationException", "errorMessage":"Received the following response from the endpoint destination. {"requestId": "109777ac-8f9b-4082-8e8d-b4f12b5fc17b", "timestamp": 1594266081268, "errorMessage": "Unauthorized"}", "attemptEndingTimestamp":1594266081318, "rawData":"c2FtcGxlIHJhdyBkYXRh", "subsequenceNumber":0, "dataId":"49607357361271740811418664280693044274821622880012337186.0" }

Kepingan salju

Untuk tujuan Snowflake, saat membuat aliran Firehose, Anda dapat menentukan durasi coba ulang opsional (0-7200 detik). Nilai default untuk durasi coba lagi adalah 60 detik.

Pengiriman data ke tabel Snowflake Anda mungkin gagal karena beberapa alasan seperti konfigurasi tujuan Snowflake yang salah, pemadaman kepingan salju, kegagalan jaringan, dll. Kebijakan coba lagi tidak berlaku untuk kesalahan yang tidak dapat diambil kembali. Misalnya, jika Snowflake menolak JSON muatan Anda karena memiliki kolom tambahan yang hilang di tabel, Firehose tidak mencoba mengirimkannya lagi. Sebagai gantinya, ini membuat cadangan untuk semua kegagalan penyisipan karena masalah JSON payload ke bucket kesalahan S3 Anda.

Demikian pula, jika pengiriman gagal karena peran, tabel, atau database yang salah, Firehose tidak mencoba lagi dan menulis data ke bucket S3 Anda. Durasi coba lagi hanya berlaku untuk kegagalan karena masalah layanan Snowflake, gangguan jaringan sementara, dll. Dalam kondisi ini, Firehose mencoba ulang untuk durasi waktu yang ditentukan sebelum mengirimkannya ke S3. Catatan yang gagal dikirimkan dalam folder snowflake-failed/, yang dapat Anda gunakan untuk pengisian ulang manual.

Berikut ini adalah contoh JSON untuk setiap catatan yang Anda kirimkan ke S3.

{ "attemptsMade": 3, "arrivalTimestamp": 1594265943615, "errorCode": "Snowflake.InvalidColumns", "errorMessage": "Snowpipe Streaming does not support columns of type AUTOINCREMENT, IDENTITY, GEO, or columns with a default value or collation", "attemptEndingTimestamp": 1712937865543, "rawData": "c2FtcGxlIHJhdyBkYXRh" }