2015-12-20 7 views
14

Say I val1 und val2 in der URL-Zeichenfolge übergeben werden soll, wenn eine GET-Anforderung an einen Endpunkt Lambda machen:Wie übergebe ich Argumente an AWS Lambda-Funktionen mit GET-Anforderungen?

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

Und ich habe eine einfache Funktion, die die beiden Eingänge summiert, val1 und val2:

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

Ich habe URL-Abfragezeichenfolgeparameter in der Methodenanforderung auf dem AWS-API-Gateway mit val1 und val2 versehen. Aber wie greife ich auf sie innerhalb der Funktion zu?

+0

Haben Sie versucht, "Ereignis" und "Kontext" zu drucken? Sie können sich die [Beispiel in der Dokumentation] (http://docs.aws.amazon.com/lambda/latest/dg/python-programming-model-handler-types.html) – albert

+0

ansehen, wenn Sie Ihre Daten übergeben richtigerweise sollten Sie in der Lage sein, auf das 'event'-Objekt mit etwas wie' event.val1' zuzugreifen (zumindest so greifen Sie auf die Eigenschaften eines Objekts in JS zu) – JohnAllen

Antwort

16

Nach der Definition der Query-String-Parameter in Methode anfordern Abschnitt des API-Gateways müssen Sie dann eine Mapping-Vorlage in der Methodenausführung Abschnitt definieren.

Im Methodenausführung Wählen Sie im Abschnitt Mapping-Vorlagen und klicken Sie dann auf Mapping Template hinzufügen. Geben Sie application/json für die Content Type und dann eine Abbildungsvorlage erstellen, die etwa wie folgt aussieht:

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

Diese API-Gateway sagen wird die Eingangsparameter zu nehmen (entweder auf dem Weg weitergegeben oder in Header oder in Abfrageparameter) genannt val1 und val2 und senden sie an die Lambda-Funktion in den Ereignisdaten als val1 und val2.

+2

Danke. Ich würde hinzufügen, dass die Mapping Templates auf der Seite Methodenausführung unter Integrationsanfrage stehen. Dieser Link war hilfreich: https://forums.aws.amazon.com/thread.jspa?threadID=192601. Immer noch ein paar Probleme, aber zumindest weiß ich wo ich hinschauen muss. – capitalistcuttle

+1

Vielleicht finde ich einen Grund für all diese Schichten, aber ich muss sagen, dass es auf den ersten Blick viel fummeliger ist, als ich es mir vorgestellt habe. Python ist so introspektiv, dass AWS Lambda das Mapping automatisch erstellen kann, indem es die Signatur der Funktion überprüft. – capitalistcuttle

+2

Dieser Link hat einige Details zur Einbindung verschiedener Parameter bei der Bearbeitung der Mapping-Vorlage geklärt: http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html # Eingabe-Variable-Referenz – python1981

Verwandte Themen