了解 Amazon 數據 Firehose 數據交付 - Amazon 數據 Firehose

Amazon 數據 Firehose 以前被稱為 Amazon Kinesis Data Firehose

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

了解 Amazon 數據 Firehose 數據交付

資料傳送至 Firehose 串流後,資料會自動傳送至您選擇的目的地。

重要

如果您使用 Kinesis Producer Library (KPL) 來寫入資料到 ​Kinesis 資料串流,則可使用彙整來合併您寫入至該 Kinesis 資料串流的記錄。如果您接著使用該資料串流作為 Firehose 串流的來源,Amazon Data Firehose 會先將記錄解彙總,然後再將記錄傳送到目的地。如果您將 Firehose 串流設定為轉換資料,Amazon 資料 Firehose 會先將記錄解除彙總,然後再傳送記錄。 AWS Lambda如需詳細資訊,請參閱《Amazon Kinesis Data Streams 開發人員指南》中的使用 Kinesis Producer Library 開發 Amazon Kinesis Data Streams 生產者彙整

設定資料傳遞格式

若要將資料傳送至亞馬遜簡單儲存服務 (Amazon S3),Firehose 會根據 Firehose 串流的緩衝組態,連接多個傳入記錄。接著,該服務會將這些記錄作為 Amazon S3 物件,並交付至 Amazon S3。根據預設,Firehose 會連接不含任何分隔符號的資料。如果您想要在記錄之間使用新的行分隔符號,可以透過啟用 Firehose 主控台設定或 API 參數中的功能來新增行分隔符號。

若要將資料傳送至 Amazon Redshift,Firehose 會先以先前所述的格式將傳入的資料交付到 S3 儲存貯體。然後,Firehose 會發出亞馬遜 Redshift COPY 命令,將資料從 S3 儲存貯體載入到 Amazon Redshift 佈建的叢集或 Amazon Redshift 無伺服器工作群組。確保 Amazon 資料 Firehose 將多個傳入記錄連接到 Amazon S3 物件後,可將 Amazon S3 物件複製到您的 Amazon Redshift 佈建叢集或 Amazon Redshift 無伺服器工作群組。如需詳細資訊,請參閱 Amazon Redshift COPY 命令資料格式參數

對於將資料傳送至 OpenSearch 服務和 OpenSearch 無伺服器,Amazon Data Firehose 會根據 Firehose 串流的緩衝組態來緩衝傳入的記錄。然後,它會產生 OpenSearch 服務或 OpenSearch 無伺服器大量要求,將多筆記錄索引至您的 Ser OpenSearch vice 叢集或 OpenSearch 無伺服器集合。在將記錄傳送至 Amazon 資料 Firehose 之前,請確定您的記錄是 UTF-8 編碼並展平為單行 JSON 物件。此外,您的 OpenSearch Service 叢集的rest.action.multi.allow_explicit_index選項必須設定為 true (預設值),才能使用每筆記錄設定的明確索引來批次處理要求。如需詳細資訊,請參閱 Amazon OpenSearch 服務開發人員指南中的 OpenSearch 服務設定進階選項

若要將資料傳送至 Splunk,Amazon 資料 Firehose 會串連您傳送的位元組。如果您的資料需要定界符號 (例如換行字元),您必須自行插入。請確認將 Splunk 設定為剖析這類定界符號。

將資料傳送到受支援的第三方服務供應商所擁有的 HTTP 端點時,您可以使用整合式 Amazon Lambda 服務建立函數,將傳入記錄轉換為符合服務提供者的整合預期的格式。請聯絡您為目的地選擇 HTTP 端點的第三方服務供應商,以進一步了解其接受的記錄格式。

若要將資料傳送至雪花,Amazon 資料 Firehose 會在內部緩衝資料一秒鐘,並使用雪花式串流 API 作業將資料插入雪花。根據預設,您插入的記錄會清除並每秒送交至 Snowflake 資料表。在您進行插入呼叫之後,Firehose 會發出一個 CloudWatch 度量,用來測量資料送達雪花的時間。Firehose 目前僅支持單個 JSON 項目作為記錄有效負載,並且不支持 JSON 數組。確保您的輸入有效負載是有效的 JSON 對象,並且格式正確,沒有任何額外的雙引號,引號或轉義字符。

瞭解資料傳送頻率

每個 Firehose 目的地都有自己的資料傳送頻率。如需詳細資訊,請參閱 瞭解緩衝提示

處理資料傳送失敗

每個 Amazon 資料 Firehose 目的地都有自己的資料交付失敗處理。

Amazon Simple Storage Service (Amazon S3)

資料交付至 S3 儲存貯體時,可能會因各種問題導致失敗。例如,儲存貯體可能不再存在,Amazon Data Firehose 假設的 IAM 角色可能無法存取儲存貯體、網路故障或類似事件。在這些情況下,Amazon 資料 Firehose 會持續重試長達 24 小時,直到交付成功為止。Amazon 數據 Firehose 件的最長數據存儲時間為 24 小時。如果超過 24 小時仍無法交付,資料將會遺失。

Amazon Redshift

對於 Amazon Redshift 目的地,您可以在建立 Firehose 串流時指定重試持續時間 (0—7200 秒)。

將資料交付到您的 Amazon Redshift 佈建的叢集或 Amazon Redshift Serverless 工作群組可能會因多種原因而失敗。例如,您可能有 Firehose 串流的叢集配置不正確、正在維護的叢集或工作群組,或是網路故障。在這些情況下,Amazon 資料 Firehose 會在指定的持續時間內重試,並略過該特定批次的 Amazon S3 物件。略過物件的資訊會傳送至 S3 儲存貯體,成為 errors/資料夾中的資訊清單檔案,以供手動回填使用。如需進一步了解如何使用資訊清單檔案來手動 COPY 資料,請參閱使用資訊清單來指定資料檔案

Amazon OpenSearch 服務和 OpenSearch無服務器

對於 OpenSearch 服務和 OpenSearch 無伺服器目的地,您可以在 Firehose 串流建立期間指定重試持續時間 (0—7200 秒)。

資料傳遞至您的 Ser OpenSearch vice 叢集或 OpenSearch 無伺服器集合可能會因為多種原因而失敗。例如,您的 Firehose 串流可能有不正確的 OpenSearch 服務叢集或 OpenSearch 無伺服器集合組態、維護中的 OpenSearch 服務叢集或 OpenSearch 無伺服器集合、網路故障或類似事件。在這些情況下,Amazon Data Firehose 會在指定的持續時間內重試,然後略過該特定索引請求。略過的文件會傳輸至 S3 儲存貯體的 AmazonOpenSearchService_failed/資料夾,以供手動回填使用。

對於 OpenSearch 服務,每個文件都具有以下 JSON 格式:

{ "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)" }

對於 OpenSearch 無伺服器,每個文件都有下列 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

當 Amazon 數據 Firehose 件將數據發送到 Splunk 時,它會等待 Splunk 的確認。如果發生錯誤,或確認未在確認逾時期間內送達,Amazon Data Firehose 會啟動重試持續時間計數器。直到重試持續時間過期之前,該服務都不會中斷重試作業。之後,亞馬遜數據 Firehose 將其視為數據交付失敗,並將數據備份到您的 Amazon S3 存儲桶。

每次 Amazon 資料 Firehose 將資料傳送至 Splunk 時,無論是初始嘗試還是重試,都會重新啟動確認逾時計數器。並等待 Splunk 傳回確認訊息。即使重試持續時間過期,Amazon Data Firehose 仍會等待確認,直到收到確認或到達確認逾時為止。如果確認逾時,Amazon Data Firehose 會檢查以判斷重試計數器是否有剩餘時間。如果還有時間,將再次重試並重複執行邏輯,直到收到確認或判斷已無重試時間為止。

未收到確認訊息,並非唯一的資料交付錯誤類型。如需其他資料交付錯誤類型的相關資訊,請參閱 Splunk 資料交付錯誤。如果您的重試期間大於 0,則任何資料交付錯誤都會觸發重試邏輯。

錯誤記錄例示如下。

{ "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" }
HTTP 端點目的地

當 Amazon 資料 Firehose 將資料傳送到 HTTP 端點目的地時,它會等待來自此目的地的回應。如果發生錯誤,或回應未在回應逾時期間內送達,Amazon Data Firehose 會啟動重試持續時間計數器。直到重試持續時間過期之前,該服務都不會中斷重試作業。之後,亞馬遜數據 Firehose 將其視為數據交付失敗,並將數據備份到您的 Amazon S3 存儲桶。

每次 Amazon Data Firehose 將資料傳送到 HTTP 端點目的地時,無論是初始嘗試還是重試,都會重新啟動回應逾時計數器。然後,它會等待來自 HTTP 端點目的地的回應到達。即使重試持續時間過期,Amazon Data Firehose 仍會等待回應,直到收到回應或到達回應逾時為止。如果回應逾時,Amazon Data Firehose 會檢查重試計數器是否有剩餘時間。如果還有時間,將再次重試並重複執行邏輯,直到收到回應或判斷已無重試時間為止。

未收到回應,並非唯一的資料交付錯誤類型。如需其他資料交付錯誤類型的相關資訊,請參閱 HTTP 端點資料交付錯誤

錯誤記錄例示如下。

{ "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" }
雪花目的地

對於雪花目的地,當您建立 Firehose 串流時,您可以指定選擇性的重試持續時間 (0-7200 秒)。重試持續時間的預設值為 60 秒。

資料傳送至 Snowflake 資料表可能會因為幾個原因而失敗,例如 Snowflake 目的地設定不正確、雪花中斷、網路故障等。重試原則不適用於無法擷取的錯誤。例如,如果 Snowflake 拒絕您的 JSON 裝載,因為它有一個額外的資料欄遺失在資料表中,Firehose 就不會嘗試再次傳送它。相反,它會為由於 S3 錯誤存儲桶的 JSON 有效負載問題而為所有插入失敗創建備份。

同樣地,如果交付因為角色、資料表或資料庫不正確而失敗,Firehose 不會重試並將資料寫入 S3 儲存貯體。重試持續時間僅適用於由於雪花服務問題,暫時性網絡故障等導致的故障。在這些情況下,Firehose 會在指定的持續時間內重試,然後再將它們交付到 S3。失敗的記錄會在雪花失敗/資料夾中傳送,您可以使用該資料夾進行手動回填。

以下是您傳遞至 S3 之每筆記錄的 JSON 範例。

{ "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" }

設定 Amazon S3 物件名稱格式

當 Firehose 將資料傳送至 Amazon S3 時,S3 物件金鑰名稱會遵循以下格式 <evaluated prefix><suffix>,其中後置字元的格式<Firehose stream name><Firehose stream version><year><month><day><hour><minute><second><uuid><file extension><Firehose stream version>為 -------------------- 從 1 開始,每次 Firehose 串流的組態變更都會增加 1。您可以變更 Firehose 串流組態 (例如 S3 儲存貯體的名稱、緩衝提示、壓縮和加密)。您可以使用 Firehose 控制台或 UpdateDestinationAPI 操作來完成此操作。

對於<evaluated prefix>,Firehose 會在格式中加入預設時間字YYYY/MM/dd/HH首。此前置詞會在值區中建立邏輯階層,其中每個正斜線 (/) 都會在階層中建立層級。您可以透過指定包含在執行階段評估之運算式的自訂前置詞來修改此結構。如需如何指定自訂前置詞的詳細資訊,請參閱 Amazon 簡單儲存服務物件的自訂首碼。

根據預設,用於時間前綴和後綴的時區是 UTC,但您可以將其更改為您喜歡的時區。例如,若要使用日本標準時間而非 UTC,您可以在 AWS Management Console 或 API 參數設定 () CustomTimeZone 中將時區設定為亞洲/東京。下列清單包含 Firehose 支援 S3 前置詞組態的時區。

以下是 Firehose 支援 S3 前置詞組態的時區清單。

Africa
Africa/Abidjan Africa/Accra Africa/Addis_Ababa Africa/Algiers Africa/Asmera Africa/Bangui Africa/Banjul Africa/Bissau Africa/Blantyre Africa/Bujumbura Africa/Cairo Africa/Casablanca Africa/Conakry Africa/Dakar Africa/Dar_es_Salaam Africa/Djibouti Africa/Douala Africa/Freetown Africa/Gaborone Africa/Harare Africa/Johannesburg Africa/Kampala Africa/Khartoum Africa/Kigali Africa/Kinshasa Africa/Lagos Africa/Libreville Africa/Lome Africa/Luanda Africa/Lubumbashi Africa/Lusaka Africa/Malabo Africa/Maputo Africa/Maseru Africa/Mbabane Africa/Mogadishu Africa/Monrovia Africa/Nairobi Africa/Ndjamena Africa/Niamey Africa/Nouakchott Africa/Ouagadougou Africa/Porto-Novo Africa/Sao_Tome Africa/Timbuktu Africa/Tripoli Africa/Tunis Africa/Windhoek
America
America/Adak America/Anchorage America/Anguilla America/Antigua America/Aruba America/Asuncion America/Barbados America/Belize America/Bogota America/Buenos_Aires America/Caracas America/Cayenne America/Cayman America/Chicago America/Costa_Rica America/Cuiaba America/Curacao America/Dawson_Creek America/Denver America/Dominica America/Edmonton America/El_Salvador America/Fortaleza America/Godthab America/Grand_Turk America/Grenada America/Guadeloupe America/Guatemala America/Guayaquil America/Guyana America/Halifax America/Havana America/Indianapolis America/Jamaica America/La_Paz America/Lima America/Los_Angeles America/Managua America/Manaus America/Martinique America/Mazatlan America/Mexico_City America/Miquelon America/Montevideo America/Montreal America/Montserrat America/Nassau America/New_York America/Noronha America/Panama America/Paramaribo America/Phoenix America/Port_of_Spain America/Port-au-Prince America/Porto_Acre America/Puerto_Rico America/Regina America/Rio_Branco America/Santiago America/Santo_Domingo America/Sao_Paulo America/Scoresbysund America/St_Johns America/St_Kitts America/St_Lucia America/St_Thomas America/St_Vincent America/Tegucigalpa America/Thule America/Tijuana America/Tortola America/Vancouver America/Winnipeg
Antarctica
Antarctica/Casey Antarctica/DumontDUrville Antarctica/Mawson Antarctica/McMurdo Antarctica/Palmer
Asia
Asia/Aden Asia/Almaty Asia/Amman Asia/Anadyr Asia/Aqtau Asia/Aqtobe Asia/Ashgabat Asia/Ashkhabad Asia/Baghdad Asia/Bahrain Asia/Baku Asia/Bangkok Asia/Beirut Asia/Bishkek Asia/Brunei Asia/Calcutta Asia/Colombo Asia/Dacca Asia/Damascus Asia/Dhaka Asia/Dubai Asia/Dushanbe Asia/Hong_Kong Asia/Irkutsk Asia/Jakarta Asia/Jayapura Asia/Jerusalem Asia/Kabul Asia/Kamchatka Asia/Karachi Asia/Katmandu Asia/Krasnoyarsk Asia/Kuala_Lumpur Asia/Kuwait Asia/Macao Asia/Magadan Asia/Manila Asia/Muscat Asia/Nicosia Asia/Novosibirsk Asia/Phnom_Penh Asia/Pyongyang Asia/Qatar Asia/Rangoon Asia/Riyadh Asia/Saigon Asia/Seoul Asia/Shanghai Asia/Singapore Asia/Taipei Asia/Tashkent Asia/Tbilisi Asia/Tehran Asia/Thimbu Asia/Thimphu Asia/Tokyo Asia/Ujung_Pandang Asia/Ulaanbaatar Asia/Ulan_Bator Asia/Vientiane Asia/Vladivostok Asia/Yakutsk Asia/Yekaterinburg Asia/Yerevan
Atlantic
Atlantic/Azores Atlantic/Bermuda Atlantic/Canary Atlantic/Cape_Verde Atlantic/Faeroe Atlantic/Jan_Mayen Atlantic/Reykjavik Atlantic/South_Georgia Atlantic/St_Helena Atlantic/Stanley
Australia
Australia/Adelaide Australia/Brisbane Australia/Broken_Hill Australia/Darwin Australia/Hobart Australia/Lord_Howe Australia/Perth Australia/Sydney
Europe
Europe/Amsterdam Europe/Andorra Europe/Athens Europe/Belgrade Europe/Berlin Europe/Brussels Europe/Bucharest Europe/Budapest Europe/Chisinau Europe/Copenhagen Europe/Dublin Europe/Gibraltar Europe/Helsinki Europe/Istanbul Europe/Kaliningrad Europe/Kiev Europe/Lisbon Europe/London Europe/Luxembourg Europe/Madrid Europe/Malta Europe/Minsk Europe/Monaco Europe/Moscow Europe/Oslo Europe/Paris Europe/Prague Europe/Riga Europe/Rome Europe/Samara Europe/Simferopol Europe/Sofia Europe/Stockholm Europe/Tallinn Europe/Tirane Europe/Vaduz Europe/Vienna Europe/Vilnius Europe/Warsaw Europe/Zurich
Indian
Indian/Antananarivo Indian/Chagos Indian/Christmas Indian/Cocos Indian/Comoro Indian/Kerguelen Indian/Mahe Indian/Maldives Indian/Mauritius Indian/Mayotte Indian/Reunion
Pacific
Pacific/Apia Pacific/Auckland Pacific/Chatham Pacific/Easter Pacific/Efate Pacific/Enderbury Pacific/Fakaofo Pacific/Fiji Pacific/Funafuti Pacific/Galapagos Pacific/Gambier Pacific/Guadalcanal Pacific/Guam Pacific/Honolulu Pacific/Kiritimati Pacific/Kosrae Pacific/Majuro Pacific/Marquesas Pacific/Nauru Pacific/Niue Pacific/Norfolk Pacific/Noumea Pacific/Pago_Pago Pacific/Palau Pacific/Pitcairn Pacific/Ponape Pacific/Port_Moresby Pacific/Rarotonga Pacific/Saipan Pacific/Tahiti Pacific/Tarawa Pacific/Tongatapu Pacific/Truk Pacific/Wake Pacific/Wallis

您無法變更字尾欄位,除了<file extension>。當您啟用資料格式轉換或壓縮時,Firehose 會根據組態附加檔案副檔名。下表說明 Firehose 附加的預設副檔名:

組態 副檔名
數據格式轉換:鑲木地板 . 鑲木地板
數據格式轉換:ORC . 獸人
壓縮:壓縮 .gz
壓縮:拉鍊 .zip
壓縮:活潑 .snappy
壓縮:波多,活潑 . 赫納皮

您也可以在 Firehose 主控台或 API 中指定您偏好的副檔名。副檔名必須以句點 (.) 開頭,且可包含允許的字元:0-9a-z! -_.*' ()。副檔名不能超過 128 個字元。

注意

當您指定檔案副檔名時,它會覆寫 Firehose 在啟用資料格式轉換或壓縮時新增的預設檔案副檔名。

設定 OpenSearch服務的索引循環

對於「 OpenSearch 服務」目的地,您可以從下列五個選項之一指定以時間為基礎的索引循環選項:NoRotationOneHourOneDayOneWeek、或OneMonth

根據您選擇的輪換選項,Amazon Data Firehose 會將 UTC 到達時間戳記的一部分附加到您指定的索引名稱。並依此輪換該時間戳記。下列範例會針對每個索引循環選項,顯示 OpenSearch Service 中產生的索引名稱,其中指定的索引名稱為,myindex而到達時間戳記為2016-02-25T13:00:00Z

RotationPeriod IndexName
NoRotation myindex
OneHour myindex-2016-02-25-13
OneDay myindex-2016-02-25
OneWeek myindex-2016-w08
OneMonth myindex-2016-02
注意

透過 OneWeek 選項,Data Firehose 會使用 <YEAR>-w<WEEK NUMBER> 格式自動建立索引 (例如,2020-w33),其中週數是使用 UTC 時間計算,並根據下列美國慣例來計算:

  • 一週的開始日為週日

  • 一年中的第一週是指當年包含週六的第一週

了解跨 AWS 帳戶和區域的交付

Amazon 資料 Firehose 支援跨 AWS 帳戶向 HTTP 端點目標傳遞資料。Firehose 串流和您選擇做為目的地的 HTTP 端點可能屬於不同的 AWS 帳戶。

Amazon 資料 Firehose 也支援跨 AWS 區域將資料傳遞到 HTTP 端點目的地。您可以將資料從某個區域的 Firehose 串流傳送到另一個 AWS 區 AWS 域的 HTTP 端點。您也可以將 HTTP 端點 URL 設定為您想要的目的地,將資料從 Firehose 串流傳遞至 AWS 區域以外的 HTTP 端點目的地,例如傳送至您自己的內部部署伺服器。在這些情況下,額外的資料傳輸費用會新增到您的交付成本中。如需詳細資訊,請參閱「隨需定價」頁面上的資料傳輸一節。

重複的記錄

Amazon 數據 Firehose 件使用 at-least-once 語義進行數據交付。在某些情況下,例如資料交付逾時時,如果原始資料傳遞請求最終通過,Amazon Data Firehose 的交付重試可能會導致重複項目。這適用於 Amazon 資料 Firehose 支援的所有目標類型。

暫停並恢復「Firehose」串流

設定 Firehose 串流後,串流來源中可用的資料會持續傳送至目的地。如果您遇到串流目的地暫時無法使用的情況 (例如,在規劃的維護操作期間),您可能會想要暫停資料交付,並在目的地再次可用時繼續執行。下列各節說明如何完成此操作:

重要

當您使用下述方法暫停和繼續串流時,在繼續串流之後,您會看到很少有記錄傳送到 Amazon S3 中的錯誤儲存貯體,而其餘串流會繼續傳送到目的地。這是此方法的已知限制,因為在將多次重試追蹤為失敗之後,有少數記錄先前無法傳遞至目的地。

了解 Firehose 如何處理派送失敗

當您設定 Firehose 串流時,對於許多目的地 (例如 OpenSearch Splunk 和 HTTP 端點),您也會設定 S3 儲存貯體,在其中備份無法交付的資料。如需有關 Firehose 如何在傳送失敗時備份資料的詳細資訊,請參閱資料傳遞失敗處理。如需如何授與 S3 儲存貯體的存取權限 (其中可備份無法交付的資料) 的詳細資訊,請參閱授與 Firehose 存取權給 Amazon S3 目的地。當 Firehose (a) 無法將資料傳遞至串流目的地,且 (b) 無法將資料寫入備份 S3 儲存貯體以進行失敗交付時,它會有效地暫停串流交付,直到資料可以傳送到目的地或寫入備份 S3 位置為止。

暫停 Firehose 溪流

若要在 Firehose 中暫停串流傳遞,請先移除 Firehose 寫入 S3 備份位置以便失敗交付的許可。例如,如果您想要暫停具有 OpenSearch 目標的 Firehose 串流,可以透過更新權限來執行此操作。如需詳細資訊,請參閱將 Firehose 存取權授予公共 OpenSearch 服務目的地。

移除動作 s3:PutObject"Effect": "Allow" 許可,並明確新增陳述式,該陳述式會針對用於備份失敗交付的 S3 儲存貯體的動作 s3:PutObject 套用 Effect": "Deny" 許可。接下來,關閉串流目的地 (例如,關閉目標 OpenSearch 網域),或移除 Firehose 寫入目的地的權限。若要更新其他目的地的許可,請查看使用 Amazon Data Firehose 控制存取中目的地的章節。完成這兩個動作之後,Firehose 將停止傳送串流,而且您可以使用 Firehose 的CloudWatch 指標來監控此項目。

重要

當您在 Firehose 中暫停串流傳遞時,您需要確保串流的來源 (例如,在 Kinesis Data Streams 或適用於 Kafka 的受管理服務中) 設定為保留資料,直到串流傳遞恢復並將資料傳送至目的地為止。如果來源是「直接輸入」,則 Firehose 會保留資料 24 小時。如果您未繼續串流,並在資料保留期限到期之前交付資料,則可能會發生資料遺失。

恢復 Firehose 溪流

若要繼續傳遞,請先開啟目的地並確保 Firehose 具有將串流傳送至目的地的權限,將先前所做的變更還原至串流目的地。接下來,還原先前套用至 S3 儲存貯體的許可變更,以備份失敗的交付。也就是說,套用動作 s3:PutObject"Effect": "Allow" 許可,並對用於備份失敗交付的 S3 儲存貯體的動作 s3:PutObject 移除 "Effect": "Deny" 許可。最後,使用 Firehose 的CloudWatch 指標進行監視,以確認串流正在傳送至目的地。若要檢視和疑難排解錯誤,請使用適用於 Firehose 的 Amazon CloudWatch 日誌監控功能。