node.js - 如何通过 Amazon API Gateway + Lambda( Node )检索用户的公共(public) IP 地址

标签 node.js amazon-web-services aws-lambda aws-api-gateway

我目前正在编写一个 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/

相关文章:

javascript - 需要指导将 excel 修改为 JSON javascript 代码,以便每组数据输出一个 JSON

amazon-web-services - 从AWS挂载数据集

node.js - AWS CloudTrail LookupEvents 不适用于 StartTime 和 EndTime Node js。获取所有事件并且不按时间过滤事件

javascript - 使用 Lambda 从 Alexa 技能获取空响应

amazon-web-services - SQS ReceiveMessage 成功但收到空消息

javascript - 为什么 npm run serve 在 Vue.js 上构建缓慢?

node.js - MongoDB:通过输入字符串或输入字符串中的单个单词的匹配进行搜索

node.js - 路线未加载组件

amazon-web-services - Terraform 按标签查找 s3 存储桶

node.js - 在 AWS Lambda 上运行 Chromeless 时出现空网页