我有一个 kinesis 数据流连接到一个 kinesis firehose,它在 S3 中转储数据。我正在使用 javascript 客户端库 aws-sdk
将记录推送到数据流中(例如使用 putRecords()
)。
有没有办法让我在服务器端记录 ip、时间戳和用户代理?更一般地说,我可以将服务器端的 http header 放入正在摄取到 kinesis 的记录中吗?还是我必须把所有这些都放在客户端?
(如果在客户端,在处理来自客户端的 ip 和时间戳时是否有任何指向最佳实践的指针,这可能不可靠?)
最佳答案
Is there a way for me to log the ip, timestamp, and user-agent op the server side?
不幸的是,您无法在服务器端执行此操作。 Kinesis API 不提供任何类型的配置,并且传递的 Kinesis 记录不包含任何随 putRecords() 请求而来的 HTTP 元数据。 ( Looks something like this .) 正如您猜测的那样,您必须在客户端添加信息。
我们有一个类似的情况,我们不能依赖客户端的细节(尤其是时间),所以我们有一个位于 Kinesis 前面的小型 Web 服务,从我们的客户端接受 HTTP,添加 HTTP 元数据和服务器端时间戳,然后将记录转发到 Kinesis。
您可以执行类似的操作,或者,如果您认为更简单,可以使用 API Gateway/Lambda 接受来自客户端的数据,添加 HTTP 元数据并将其转发到支持 API Gateway 端点的 Lambda 内的 Kinesis。
关于amazon-web-services - 如何在 Kinesis 服务器端记录 IP、时间戳和用户代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51217504/