在Object Lambda访问点的Lambda函数中能否获取调用方的IP地址?
针对S3 Object Lambda访问点关联Lambda函数获取调用方IP的问题解答
可以直接在Lambda函数内部获取调用方IP,相关信息默认包含在Object Lambda访问点触发函数时传入的事件参数中,无需额外配置权限。
具体取值方法
- 调用方的公网IP默认存放在事件对象的
requestContext.identity.sourceIp路径下,不同运行时仅取值语法有差异,路径规则完全一致。 - 示例(Python运行时):
def lambda_handler(event, context): # 直接从事件中读取调用方IP caller_ip = event['requestContext']['identity']['sourceIp'] # 后续可将该字段写入日志或审计系统 print(f"访问者IP: {caller_ip}, 访问对象: {event['getObjectContext']['inputS3Url']}") # 剩余业务逻辑...
特殊场景说明
如果请求是通过CDN、代理服务或企业内网网关转发至Object Lambda访问点,上述取到的IP为转发节点的IP,如需获取最终客户端真实IP,可从事件的headers字段中读取X-Forwarded-For头解析:
# 解析X-Forwarded-For头获取真实客户端IP forwarded_for = event['headers'].get('x-forwarded-for', '') if forwarded_for: real_client_ip = forwarded_for.split(',')[0].strip()
内容的提问来源于stack exchange,提问作者Adithya Sama
相关产品推荐
相关产品推荐

