如何在AppSync自定义Lambda Authoriser中获取请求源IP地址
AppSync Lambda授权器获取请求源IP解决方案
默认情况下AWS AppSync的自定义Lambda授权器不会主动透传客户端请求头到授权函数,所以你打印event和context时看不到X-Forwarded-For字段,可通过以下方式配置获取:
方案1:配置授权器透传指定请求头(推荐)
这是官方支持的原生方案,操作步骤如下:
- 进入AppSync控制台,打开目标API的「授权」页,找到你配置的自定义Lambda授权器
- 在授权器配置项中找到**身份来源(Identity sources)**配置项,选择类型为
Header,值填写X-Forwarded-For,保存配置 - 重新部署AppSync API后,再打印授权器的event参数,即可在
event.requestContext.identity.sourceIp或者event的顶级字段中拿到客户端源IP,X-Forwarded-For头的第一个值即为客户端真实公网IP
配置完成后可参考以下代码读取IP:
exports.handler = async (event, context) => { // 直接读取上下文内置源IP const clientIp = event.requestContext.identity.sourceIp // 也可以读取透传的X-Forwarded-For头解析真实IP const xForwardedFor = event.headers['X-Forwarded-For'] const realIp = xForwardedFor.split(',')[0].trim() console.log('客户端真实IP:', realIp) // 原有授权逻辑 }
方案2:兼容旧版本AppSync的替代方案
如果你的AppSync实例版本不支持上述透传配置,可采用以下替代方式:
- 在AppSync前端部署一层CloudFront/API Gateway作为代理,在代理层将客户端源IP写入自定义请求头(例如
X-Client-IP),再将该头配置到授权器的透传列表中 - 也可在前端请求时主动将客户端IP写入自定义授权头的额外字段,在Lambda授权器中解析授权Token即可提取对应IP
内容的提问来源于stack exchange,提问作者CMP
相关产品推荐
相关产品推荐

