了解 CloudFront 日誌文件
我正在為 CloudFront 日誌文件設置處理管道。閱讀文件,我的理解是 CF 將在每個分發版每小時創建一個日誌文件,但這不是我在儲存桶中看到的。我每個發行版(每小時)獲得多個文件:
E39O6KS6J8MIZW.2015-10-09-23.083b2c12.gz E39O6KS6J8MIZW.2015-10-09-23.1a96bb61.gz E39O6KS6J8MIZW.2015-10-09-23.4cd34dd8.gz E39O6KS6J8MIZW.2015-10-09-23.50c7b5b1.gz
我錯過了什麼?基本上,我想了解的是什麼驅動程序創建了新的日誌文件。
正如您可能知道的那樣,CloudFront 是一個全球分佈式系統,其中配置是集中的,但一旦將配置推送給 50 多個邊緣站點,它們就會獨立執行。
日誌可能在每個邊緣本地或區域收集,然後定期收集並組裝成整合日誌並發佈到您的日誌儲存桶。
嵌入在日誌文件名中的時間戳大致表示所包含事件發生的小時數。因此,給定小時的日誌通常不會在一小時內到達,甚至不會在緊接的一小時內到達。
如果有任何事情阻止了來自某些邊緣的日誌被及時收集(正如在全球分佈式平台中所預期的那樣),它們通常會在幾個小時內到達一個回溯日誌文件,該文件表示大約時間日誌最初是記錄的。
日誌文件傳送時間
CloudFront 每小時最多提供幾次分配的訪問日誌。通常,日誌文件包含有關 CloudFront 在給定時間段內收到的請求的資訊。CloudFront 通常會在日誌中出現事件的一小時內將該時間段的日誌文件傳送到您的 Amazon S3 儲存桶。但是請注意,某個時間段內的部分或全部日誌文件條目有時可能最多延遲 24 小時。當日誌條目延遲時,CloudFront 將它們保存在一個日誌文件中,該文件的文件名包括請求發生期間的日期和時間,而不是文件傳遞的日期和時間。
http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html#access-logs-timing
因此,基本上,CloudFront 將在您的分配有任何流量的每一小時創建至少一個日誌文件,但日誌基本上可以在任何時間到達……因此您無法有效地輪詢儲存桶以查找基於目前時間、前一小時的時間等
盡可能快速地處理這些問題(無需輪詢儲存桶)的一種方法是S3 事件通知。
無論如何,您確實需要準備好處理任何時間戳,無論何時寫入,不要假設重複,也不要忽視日誌,因為它的時間戳似乎比預期的要舊。