succeed node home example east context aws node.js amazon-web-services aws-lambda aws-api-gateway

node.js - node - ¿Cómo puedo recuperar la dirección IP pública de un usuario a través de Amazon API Gateway+Lambda(nodo)?



https console aws amazon com lambda home region us east 1 (3)

Actualmente estoy escribiendo una función lambda Node.js, en la que quiero registrar la dirección IP pública del solicitante entrante. He estado revisando los documentos API Gateway y Lambda todo el día, pero no he encontrado una solución.

¿El objeto de event lambda incluye metadatos de solicitud que puedo usar para extraer la IP del usuario?


Aquí hay una demostración simple del uso de $context.identity.sourceIp la puerta de enlace API en una función Lambda.

Plantilla de mapeo API:

{     "sourceIP" : "$context.identity.sourceIp" }

Función Lambda:

''use strict''; console.log(''Loading function''); exports.handler = (event, context, callback) => { console.log(''SourceIP ='', event.sourceIP); callback(null, event.sourceIP); };



Editar

Una mejor manera es en realidad comprobar

event[''requestContext''][''identity''][''sourceIp'']

También puede obtener el User-Agent del mismo objeto

event[''requestContext''][''identity''][''userAgent'']

Ver el comentario de Cesar a continuación. Los encabezados son fáciles de falsificar y el usuario puede configurar X-Forwarded-For para cualquier cosa. AFAIK el sourceIp anterior se recupera de la conexión TCP.

Respuesta original

A partir de septiembre de 2017, puede crear un método en la puerta de enlace API con integración de Lambda Proxy, esto le dará acceso a

events[''headers''][''X-Forwarded-For'']

Que se verá algo así como 1.1.1.1,214.25.52.1

La primera ip 1.1.1.1 es la dirección IP pública de su usuario.