2017-10-10 4 views
0

Die documentation besagt, dass die JSON zurückgegeben werden sollte, die einen Rumpf, Header und einen Statuscode enthält, von denen ich alle habe. Aus welchem ​​Grund auch immer, wenn ich es in API-Gateway testen, gibt es eine ungültige Antwort zurück.AWS-API-Gateway Fehlerhafte Lambda-Antwort

Dies ist die Ausgabe der Methode darunter.

"{\" body \ ": 200 \" headers \ ": {\" Content-Type \ ": \" application/json \ "}, \" status \ ": 200}"

def addnumbers(message, context): 

    result = message['num1'] + 1 
    print(result) 
    resp = { 
     "statusCode": 200, 
     "body": result, 
     "headers": { "Content-type": "application/json"} 
    } 
    return (json.dumps(resp)) 

ich gerade vorbei in num1 = 1 und es keine bessere Fehlermeldung nicht geben. Jede Anleitung würde geschätzt werden.

+1

Was passiert, wenn Sie versuchen, direkt mit dem Response-Objekt zurück, anstatt es in eine Zeichenkette mit 'json.dumps' umzuwandeln? Einfach 'zurück resp'? –

+0

Noch das gleiche Problem, könnte es etwas anderes sein, das es außer dem Code betrifft? –

+0

Sind Sie sicher, dass diese Antwort zurückgegeben wird und kein Fehler ausgegeben wird? Überprüfst du die Logs der Funktion in CloudWatch? –

Antwort

0

Ok Schnalle für eine Antwort.

Stellen Sie sicher, dass die Proxy-Integration für jede beliebige Ressource in Ihrer API aktiviert ist.

Jetzt gehen Sie zu Ihrem Lambda. Schau dir an, wie ich zuvor versucht habe, num1 zu übergeben. Ich habe versucht, es aus dem "Event" oder der Nachricht zu bekommen. Hier stolperte ich. Beachten Sie auch (you can't do a get with a body) Eher sollte der Eingang zum Lambda so sein.

{ "queryStringParameters": { "Input": } "Was auch immer der Eingang Sie die Lambda testen möchten ist"}

So, jetzt haben wir unseren Test für die konfiguriert haben Lambda müssen wir das Lambda selbst codieren.

habe ich diesen Code in:

def lambda_handler (Ereignis, Kontext):

number = "Hello, " + event['queryStringParameters']['input'] 
out = {} 
out['statusCode'] = 200 
out['body'] = number 

return (out) 

Nun, wenn Sie es in Ordnung sein testen.

an dem API-Gateway Im "Query Strings" Abschnitt in input = randomname

Es soll jetzt mit hallo, randomname

zurückkehren setzen Zurück