13

我最近在 Amazon S3 中托管,我需要日志文件来计算对象中“get”、“put”、“list”操作的统计信息。

而且我观察到日志文件的组织方式很奇怪。我不知道日志什么时候会出现(不是立即出现,至少在操作后 20 分钟),以及一个日志文件中会包含多少行日志。

之后,我需要下载这些日志文件并对其进行分析。但我不知道我多久会这样做一次。

有人可以帮忙吗?谢谢。

4

2 回答 2

18

您所描述的(日志文件延迟可用且顺序不可预测)正是AWS 声明的预期行为。这是分布式系统的本质,AWS S3 用于提供 S3 服务,每次可能会从不同的服务器提供相同的请求 - 我已经看到提供 5 个不同的 IP 地址用于发布。

所以唯一的解决方案是:接受延迟,看看你经历的延迟,增加一些额外的时间,并学会忍受这个总延迟(我预计大约 30 到 60 分钟,但统计数据可以说明更多)。

如果您需要订购日志记录,您可以自己对它们进行排序,或者搜索一些日志处理解决方案——我已经看到一些应用程序正是为此目的而提供的。

如果您确实需要在很短的延迟时间内获取日志文件,您必须自己制作日志,这意味着您必须编写并运行一些前端,以便在 S3 上访问您的文件,同时保持根据需要记录。

我运行这样一个解决方案,用户获得我的前端的用户名和密码以及 url。当他们发送请求时,我会评估他们是否提供了正确的凭据以及是否允许他们查看给定的资源,如果是,我会为该资源创建几分钟有效的临时 url 并将请求重定向到该资源。

但是这样的前端需要花钱(你必须在某个地方运行你的前端)并且不太健壮,然后直接访问 AWS S3。

祝你好运,露露。

于 2013-10-10T01:02:10.817 回答
0

自问题最初发布以来,发生了很多变化。延迟仍然存在,但 OP 关注的问题之一是何时下载日志以分析它们。

现在的一种选择是利用事件通知:https ://docs.aws.amazon.com/AmazonS3/latest/user-guide/setup-event-notification-destination.html

这样,每当在访问日志存储桶中创建对象时,您都可以向 SNS、SQS 或 Lamba 触发通知,并根据该下载和分析日志文件。

于 2019-01-10T21:24:30.810 回答