rde*_*ges 41 amazon-web-services node.js aws-lambda aws-api-gateway
我正在编写一个Node.js lambda函数,我想在其中记录传入请求者的公共IP地址.我一整天都在查看API网关和Lambda文档,但还没有找到解决方案.
lambda event对象是否包含我可以用来提取用户IP的请求元数据?
Ken*_*unn 34
以下是$context.identity.sourceIp在Lambda函数中使用API网关的简单演示.
API映射模板:
{
    "sourceIP" : "$context.identity.sourceIp"
}
Lambda函数:
'use strict';
console.log('Loading function');
exports.handler = (event, context, callback) => {
    console.log('SourceIP =', event.identity.sourceIP);
    callback(null, event.identity.sourceIP);
};
Jon*_*han 30
编辑
实际上更好的方法是检查
event['requestContext']['identity']['sourceIp']
您还可以从同一对象获取User-Agent
event['requestContext']['identity']['userAgent']
请参阅下面的Cesar评论.标题很容易被欺骗,用户可以设置X-Forwarded-For任何东西.sourceIp从TCP连接中检索上述AFAIK .
原始答案
截至2017年9月,您可以在API Gateway中使用Lambda Proxy集成创建方法,这将使您可以访问
events['headers']['X-Forwarded-For']
这看起来像什么 1.1.1.1,214.25.52.1
第一个ip 1.1.1.1是用户的公共IP地址.
Mik*_*e76 10
在API网关中,它是值
$context.identity.sourceIp
您可以通过映射模板将其传递给Lambda.
| 归档时间: | 
 | 
| 查看次数: | 22239 次 | 
| 最近记录: |