2017-09-28 2 views
2

Ich bin neu in AWS und ich habe gerade erfolgreich eine Lambda-Funktion mit RDS-Verbindung eingerichtet. Nun möchte ich von außen über das API-Gateway auf meine neue Funktion zugreifen und einige Argumente übergeben wie: "Farbe": "rot"Zugriff GET-Parameter in AWS Lambda

https://my-api-id.execute-api.region-id.amazonaws.com/flowers?

Ich habe alles nach dem developer guide eingerichtet, aber leider kann ich nicht auf den GET-Parameter in meiner Python Lambda-Funktion zugreifen.

Was ich bisher in meinem AWS API-Gateway getan haben:

  • Erstellen einer Ressource "/ Blumen" und eine GET-Methode
  • GET -> Methode anfordern -> URL Query-String-Parameter -> Hinzugefügt "Farbe"
  • GET -> Integration Request -> Typ: Lambda-Funktion
  • GET -> Integration Request -> URL Query-String-Parameter -> hinzugefügt name: color, mapped: method.request.querystring.color

Ich versuchte, die color Parameter in den Lambda-Handler zugreifen, aber das Ereignis ist immer leer, und ich weiß nicht, wo der Parameter sonst

def handler(event, context): 

    return event  // {} 

Ich glaube, ich bin nicht in der Lage sein soll verwenden Die body mapping tamplates, es sei denn, ich habe keine Anfrage Körper mit GET.

Weiß jemand, was ich in meiner Python Lambda-Funktion tun muss, um auf meinen color Parameter zuzugreifen?

+1

Mögliche Duplikat (https://stackoverflow.com/questions/46407161/aws-api-gateway-integration- Anfrage-How-to-Append-eine-Eigenschaft-an-Anfrage-Körper) –

+0

Vielen Dank für Ihre Antwort! Korrigieren Sie mich, wenn ich falsch liege, aber wenn ich keine GET-Anfrage habe, habe ich keine Anfrage oder sogar einen Inhaltstyp. Ich sehe, dass ich auf die Parameter im _Body Mapping Template_ zugreifen kann, indem ich $ input.params ('querystringkey') benutze. Aber können Sie erklären, wie ich auf diese Daten in meiner tatsächlichen Lambda-Funktion zugreifen kann? – user3191334

+0

Die beste und standardmäßige Methode für den Zugriff auf die Abfragezeichenfolge ist die Verwendung der Integrationsanforderung. Selbst die offizielle Dokumentation von AWS schlägt nur diesen Weg vor. Weitere Informationen finden Sie unter "Erstellen einer GET-Methode mit Abfrageparametern zum Aufrufen der Lambda-Funktion" in http://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-lambda .html. Alternativ können Sie andere npm-Pakete wie 'querystring' (https://nodejs.org/api/querystring.html) verwenden, um eine Abfragezeichenfolge zu erhalten, die nicht offiziell ist. –

Antwort

4

Verwenden Sie Lambda-Proxy als Ihre Integrationsanforderungstyp.

Und in Ihrem Handler,

def handler(event, context): 

    return { 
     'statusCode': 200, 
     'body': json.dumps(event), 
    } 

Ihre Abfrageparameter sollten als event['queryStringParameters'] zugänglich sein.

Referenz: [? Aws Api-Gateway Integration anfordern Wie eine Eigenschaft anhängen zu ersuchen] Set up a Proxy Resource with the Lambda Proxy Integration

+0

Vielen vielen Dank! Diese zwei Dinge haben es geschafft! :-) – user3191334