如何通过Amazon API Gateway + Lambda(节点)获取用户的公共IP地址
我目前正在写一个Node.js的lambda函数,我想logging传入的请求者的公共IP地址。 我一整天都在浏览API网关和Lambda文档,但还没有find解决scheme。
lambda event
对象是否包含可用于提取用户IP的请求元数据?
以下是在Lambda函数中使用API网关的$context.identity.sourceIp
的简单演示。
API映射模板:
{ "sourceIP" : "$context.identity.sourceIp" }
Lambdafunction:
'use strict'; console.log('Loading function'); exports.handler = (event, context, callback) => { console.log('SourceIP =', event.sourceIP); callback(null, event.sourceIP); };
在API网关中,这是价值
$context.identity.sourceIp
您可以通过映射模板将其传递给您的Lambda。
编辑
更好的方法是实际检查
event['requestContext']['identity']['sourceIp']
您也可以从同一个对象获取User-Agent
event['requestContext']['identity']['userAgent']
原始答案
截至2017年9月,您可以使用Lambda Proxy集成在API网关中创build一个方法,这将使您能够访问
events['headers']['X-Forwarded-For']
这看起来像1.1.1.1,214.25.52.1
第一个ip 1.1.1.1
是你的用户的公共ip地址。