【问题标题】:How do I log IP, timestamp, and user-agent on Kinesis server side如何在 Kinesis 服务器端记录 IP、时间戳和用户代理
【发布时间】:2018-12-15 11:34:38
【问题描述】:
我有一个 kinesis 数据流连接到一个可在 S3 中转储数据的 kinesis firehose。我正在使用 javascript 客户端库 aws-sdk 将记录推送到数据流中(例如使用 putRecords())。
有没有办法让我记录服务器端的 ip、时间戳和用户代理?更一般地说,我可以将服务器端的 http 标头放入被摄取到 kinesis 的记录中吗?还是我必须将所有这些都放在客户端?
(如果在客户端,在处理来自客户端的 ip 和时间戳时,是否有任何指向最佳实践的指针,这可能不可靠?)
【问题讨论】:
标签:
amazon-web-services
amazon-kinesis
amazon-kinesis-firehose
【解决方案1】:
有没有办法让我记录 ip、时间戳和用户代理操作
服务器端?
很遗憾,您无法在服务器端执行此操作。 Kinesis API 不提供任何类型的配置,传递的 Kinesis 记录不包含 putRecords() 请求带来的任何 HTTP 元数据。 (Looks something like this.) 如您所料,您必须在客户端添加信息。
我们有类似的情况,我们不能依赖客户端的详细信息(尤其是时间),所以我们有一个位于 Kinesis 前面的小型 Web 服务,接受来自客户端的 HTTP,添加 HTTP 元数据和服务器-side 时间戳,然后将记录转发到 Kinesis。
您可以做类似的事情,或者,如果您认为更简单,可以使用 API Gateway/Lambda 接受来自您的客户端的数据,添加 HTTP 元数据并将其转发到支持 API Gateway 端点的 Lambda 内的 Kinesis。