2015-10-11 12 views

Odpowiedz

23

Oto prosta demonstracja użycia interfejsu API bramy $context.identity.sourceIp w funkcji Lambda.

API mapowania szablonu:

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

Lambda funkcja:

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

To jest niesamowite. Dzięki za informację o mapowaniu =) – rdegges

+0

FYI: W przypadku integracji proxy, bramka API przekazuje całe żądanie do backendu i nie ma żadnej opcji modyfikacji zachowań przejściowych. http://docs.aws.amazon.com/apigateway/latest/developerguide/integration-passthrough-behaviors.html?shortFooter=true –

+4

W przypadku integracji z serwerem Lambda źródłowy adres IP jest zawarty w zdarzeniu przekazywanym do funkcji. E.g. event.requestContext.identity.sourceIp –

8

w API Gateway, to wartość

$context.identity.sourceIp 

http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#context-variable-reference

można przekazać, że dzięki do Lambda za pomocą szablonu odwzorowania.

+0

Cool. Ale jak mogę odwołać się do przekazanej wartości w mojej funkcji Lambda? – AaronBaker

+1

Próbowałem robić poprzez mapowanie szablonu, zrobiłem prawie wszystko, ale to nie zadziałało, Czy jest jakieś wyraźne odniesienie krok po kroku lub przykład, który może o tym mówić? –

5

Edit

Lepszym sposobem jest rzeczywiście sprawdzić

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

Można również uzyskać User-Agent z tego samego obiektu

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

Original odpowiedzi

od września 2017 roku, można utworzyć metody w API bramki z integracją Lambda Proxy, to daje Dostęp do

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

Która będzie wyglądać 1.1.1.1,214.25.52.1

Pierwszy adres IP 1.1.1.1 to publiczny adres IP użytkownika.

+0

To jest prawdziwa odpowiedź, jeśli korzystasz z integracji Lambda proxy. O wiele łatwiej niż dodawanie mapowania dla każdej metody. –

Powiązane problemy