2015-12-20 11 views
14

Say Chcę przekazać VAL1 i val2 w adresie URL podczas dokonywania żądania GET do Lambda końcowego:Jak przekazywać argumenty do funkcji AWS Lambda za pomocą żądań GET?

https://xyz.execute-api.amazonaws.com/prod/test?val1=5&val2=10 

I mam prostą funkcję, która sumuje dwa wejścia, VAL1 i val2:

def lambda_handler(event, context): 
    # How do I get at val1 and val2?? 
    return {'result': val1 + val2} 

Dodałem wartości val1 i val2 do parametrów zapytania kwerend URL w żądaniu metody w bramce interfejsu AWS API. Ale w jaki sposób mam do nich dostęp wewnątrz funkcji?

+0

Czy próbowałeś wydrukować zarówno "zdarzenia", jak i "kontekstu"? Możesz rzucić okiem na [próbkę w dokumentach] (http://docs.aws.amazon.com/lambda/latest/dg/python-programming-model-handler-types.html) – albert

+0

Jeśli przekażesz swoje dane poprawnie, powinieneś mieć dostęp do obiektu 'event' z czymś takim jak' event.val1' (przynajmniej tak masz dostęp do właściwości obiektu w JS) – JohnAllen

Odpowiedz

16

Po zdefiniowaniu parametrów ciąg kwerendy w metoda żądania sekcję API bramy, następnie trzeba określić odwzorowanie szablonu w wykonaniu sekcji Method.

W Metoda wykonywania sekcji, wybierz Mapowanie Szablony a następnie kliknij przycisk Dodaj mapowania szablonu. Wprowadź application/json dla typu Content a następnie utworzyć szablon mapowania, który wygląda mniej więcej tak:

{ 
    "va1": "$input.params('val1')", 
    "val2": "$input.params('val2')" 
} 

to powie API Brama do podjęcia parametry wejściowe (albo przeszły na ścieżce, lub w nagłówkach lub w parametry zapytania) o nazwach val1 i val2 i wysłanie ich do funkcji Lambda w danych zdarzenia jako val1 i val2.

+2

Dzięki. Dodam, że szablony odwzorowań są w ramach żądania integracji na stronie wykonywania metod. Ten link był pomocny: https://forums.aws.amazon.com/thread.jspa?threadID=192601. Nadal mam kilka problemów, ale przynajmniej wiem, gdzie szukać. – capitalistcuttle

+1

Może znajdę jakiś powód dla wszystkich tych warstw, ale muszę powiedzieć, że na pierwszy rzut oka jest to DUŻO bardziej skrzypiący, niż sobie wyobrażałem. Python jest tak introspekcyjny, że AWS Lambda może po prostu utworzyć mapowanie automatycznie poprzez sprawdzenie sygnatury funkcji. – capitalistcuttle

+2

Ten link wyjaśnił niektóre szczegóły dotyczące uwzględniania różnych typów parametrów podczas edytowania szablonu mapowania: http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html # input-variable-reference – python1981

Powiązane problemy