0

我想使用AWS AccessLogs處理使用現有面向批處理ETL管道,抓住印象的最後成品小時網站的印象,做了很多與他們進一步轉換。AWS CloudFront訪問日誌中是否有任何通知?

與ACCESSLOG的問題是,雖然:

但是請注意,某些或所有日誌文件條目的時間段可以 有時可通過長達24小時

所以延遲我永遠不會知道特定小時的所有日誌何時完成。 不幸的是我不能使用任何流式解決方案,我需要使用現有的管道來抓取小時批量的數據。

所以我的問題是,有沒有什麼辦法可以通知全部日誌已經交付給s3一個特定的小時?

+0

你指的是亞馬遜S3 [服務器訪問日誌記錄(http://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs。html)還是Amazon CloudFront [訪問日誌](http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html)? –

+0

@JohnRotenstein對不起,我說的是將CloudFront AccessLogs存儲到s3,然後由我在ETL管道中處理。 – lisak

回答

0

你問S3,但你的上拉報價從CloudFront的文檔。

無論哪種方式,不過,這並不重要。這只是一個警告,說日誌傳送可能有時會延遲,如果延遲,這不是一個錯誤 - 這是一個大規模的分佈式系統的副作用。

兩個服務工作的一個不可思議的規模大,所以定期,事情出錯,系統的一小部分,並最終擱淺的一些日誌或積壓的日誌可能會找到並交付使用。很少,他們甚至可以在幾天或幾周後到達。

沒有事件意味着所有日誌的完成,因爲有這樣一個系統內無單點是意識到了這一點。

但這裏是外賣概念:原木多數分鐘內到達,但不能保證這一點。一旦開始運行流量並觀察日誌記錄如何工作,您將看到我所指的是什麼。延遲日誌是例外情況,您應該能夠快速瞭解​​在給定掛鐘時間處理日誌之前需要等待多長時間。只要您跟蹤所處理的內容,稍後可以對該存儲桶進行審覈,以確保您的進程正在捕獲足夠比例的日誌。


由於CloudFront的收到SNI支持,我一直在路由流量到一些在同一區域中的水桶使用EC2我HAProxy的S3桶的日子。這讓我能夠使用自定義主機名和SNI,但也使用HAProxy實時記錄所有存儲桶流量,HAProxy可以將其日誌的副本流式傳輸到日誌收集器,以便通過UDP進行實時分析就像寫入syslog一樣。這種解決方案在性能上沒有可衡量的差異,並且HAProxy在T2級服務器上運行得非常好,因此具有成本效益。當然,您的確會引入更多成本和更多維護成本,但只要您未使用源訪問身份,您甚至可以在 CloudFront和S3之間部署HAProxy 。我的一個較大的服務就是這麼做的,這是Lambda @ Edge之前的一個延期。

相關問題