Wie kann ich ein Benutzer abgerufen hat die öffentliche IP-Adresse per Amazon-API-Gateway + Lambda (Knoten)
Schreibe ich momentan eine Node.js lambda-Funktion, in die ich möchte zu Protokoll der eingehenden Antragsteller die öffentliche IP-Adresse. Ich habe auf der Suche durch die API-Gateway-und Lambda-docs ganzen Tag, aber habe noch keine Lösung gefunden.
Macht die lambda event
Objekt mit Anfrage-Metadaten kann ich verwenden, um zu extrahieren die IP des Nutzers?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine einfache demonstration der Verwendung von API-Gateway
$context.identity.sourceIp
in eine Lambda-Funktion.API-Mapping-Vorlage:
Lambda-Funktion:
Bearbeiten
Einem besseren Weg ist, tatsächlich zu überprüfen,
Kann man auch den User-Agent aus dem gleichen Objekt
Siehe Cesar ' s Kommentar unten. Header sind leicht gefälscht ist, und der Benutzer kann
X-Forwarded-For
zu nichts. AFAIK diesourceIp
oben ist wieder der TCP-Verbindung.Ursprüngliche Antwort
Ab September 2017, Sie können erstellen Sie eine Methode in der API-Gateway mit Lambda-Proxy-integration, dies wird Ihnen den Zugang zu
Die Aussehen wie
1.1.1.1,214.25.52.1
Die erste ip -
1.1.1.1
ist für den Benutzer der öffentlichen ip-Adresse.X-Forwarded-For
- header manipuliert werden können durch den Benutzer verändert und auf was auch immer Sie wollen.In der API-Gateway, ist es das Wert
http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#context-variable-reference
Übergeben werden können, die durch Ihre Lambda-über eine mapping-Vorlage.