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);
};
En la puerta de enlace API, es el valor
$context.identity.sourceIp
Puede pasar eso a su Lambda a través de una plantilla de mapeo.
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.