如何在 Kinesis 服务器端记录 IP、时间戳和用户代理

Chr*_*her 5 amazon-web-services amazon-kinesis amazon-kinesis-firehose

我有一个连接到 kinesis firehose 的 kinesis 数据流,该 kinesis firehose 将数据转储到 S3 中。我正在使用 javascript 客户端库aws-sdk将记录推送到数据流中(例如使用putRecords())。

有没有办法让我在服务器端记录 IP、时间戳和用户代理?更一般地说,我可以将服务器端的 http 标头放入正在摄取到 kinesis 中的记录中吗?或者我必须把所有这些都放在客户端吗?

(如果在客户端,在处理来自客户端的 IP 和时间戳时是否有任何指向最佳实践的指针,这可能不可靠?)

dev*_*rus 3

有没有办法让我在服务器端记录 IP、时间戳和用户代理?

不幸的是,您无法在服务器端执行此操作。Kinesis API 不提供任何类型的配置,并且传递的 Kinesis 记录不包含通过 putRecords() 请求传递的任何 HTTP 元数据。(看起来像这样。)正如您猜测的那样,您必须在客户端添加信息。

我们也有类似的情况,我们不能依赖客户端详细信息(特别是时间方面),因此我们在 Kinesis 前面有一个小型 Web 服务,接受来自客户端的 HTTP,添加 HTTP 元数据和服务器端时间戳,然后将记录转发到 Kinesis。

您可以执行类似的操作,或者,如果您认为更简单,可以使用 API Gateway/Lambda 接受来自客户端的数据,添加 HTTP 元数据并将其转发到支持 API Gateway 端点的 Lambda 内的 Kinesis。