目前,我们通过EC2实例代理向S3发送GET(下载)请求。这样做的原因是我们想知道特定文件有多少流量。
现在我们希望能够不使用该代理。但我们仍然需要这些信息。有没有办法做到这一点?
我想要的是对特定服务器的webhook /回调。或者可以从日志文件中实时/实时读取它。
有没有办法实现这个目标?一段时间以来一直在寻找答案,但也许我们没有想出正确的方向。
答案 0 :(得分:2)
为S3存储桶启用logging,然后(可选)将客户端直接发送到存储桶。
日志格式包括“已发送的字节数”以及“对象大小”以及许多其他好东西,包括远程IP,引用页面和带有查询字符串的请求URI。
日志当然不是实时的,但你会发现每隔几分钟就会有一个新的日志丢入你的桶中。如果您愿意,可以检索它,解析它,存储有趣的内容,如果您不想在日志上支付每月存储成本,则将其删除。
答案 1 :(得分:0)
保持请求网址相同,指向您的EC2实例。但是,不要通过EC2实例将内容从S3代理到客户端,而是让您的EC2实例将用户重定向到S3 URL。
使用过期的签名网址进行重定向。您的EC2实例可以在每个请求上创建适当的URL,在几分钟后到期。这样客户端就有时间获取S3资源,但为它添加书签将无法正常工作,因为它们在以后尝试时会过期。因此,他们总是必须转到您的EC2实例来获取资源,允许您控制和记录访问权限,但您不必代理内容本身。