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之前的一个延期。

相关问题