我目前正在编写一个 Node.js lambda 函数,我想在其中记录传入请求者的公共(public) IP 地址。我整天都在查看 API Gateway 和 Lambda 文档,但没有找到解决方案。
lambda event
对象是否包含可用于提取用户 IP 的请求元数据?
最佳答案
HTTP API 更新
添加@Elijah 的评论。 HTTP API 的格式为
event['requestContext']['http']['sourceIp']
编辑
更好的方法实际上是检查
event['requestContext']['identity']['sourceIp']
你也可以从同一个对象中获取 User-Agent
event['requestContext']['identity']['userAgent']
请参阅下面的 Cesar 评论。 header 很容易被欺骗,用户可以将 X-Forwarded-For
设置为任何内容。 AFAIK 上面的 sourceIp
是从 TCP 连接中检索到的。
原答案
截至 2017 年 9 月,您可以在 API Gateway 中创建一个与 Lambda 代理集成的方法,这样您就可以访问
events['headers']['X-Forwarded-For']
看起来像 1.1.1.1,214.25.52.1
第一个ip1.1.1.1
是你用户的公网ip地址。
关于node.js - 如何通过 Amazon API Gateway + Lambda( Node )检索用户的公共(public) IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33062097/