2017-10-10 3 views
0

Le documentation indique que le fichier json doit renvoyer un corps, des en-têtes et un code d'état dont je dispose. Cependant, pour une raison quelconque, lorsque je l'ai testé dans la passerelle API, il renvoie une réponse malformée.AWS API Gateway Réponse lambda mal formée

Ceci est la sortie de la méthode ci-dessous.

"{\" corps \ ": 200, \" têtes \ ": {\" Content-type \ ": \" application/JSON \ "}, \" statusCode \ ": 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)) 

Je passe actuellement num1 = 1 et il ne donne pas de message d'erreur plus. Toute orientation serait appréciée.

+1

Qu'est-ce qui se passe lorsque vous essayez de retourner l'objet de réponse directement, au lieu de le convertir en une chaîne avec 'json.dumps'? Simplement 'return resp'? –

+0

Toujours le même problème, pourrait-il être quelque chose d'autre qui l'affecte en dehors du code? –

+0

Etes-vous sûr qu'il retourne cette réponse et ne pas lancer une erreur? Vérifiez-vous les journaux de la fonction dans CloudWatch? –

Répondre

0

Ok boucle pour une réponse.

Assurez-vous que l'intégration du proxy est activée quelle que soit la ressource de votre API.

Maintenant, allez à votre lambda. Regardez comment j'essayais auparavant de passer en num1.J'essayais de l'obtenir à partir de "l'événement" ou message. C'est là que je trébuchais. Notez également (you can't do a get with a body) L'entrée du lambda devrait plutôt ressembler à ceci.

{ "queryStringParameters": { "entrée": "Quelle que soit l'entrée que vous voulez le lambda pour tester" } }

Maintenant que nous avons notre test configuré pour la lambda nous devons coder le lambda lui-même.

Je mis ce code dans:

DEF lambda_handler (événement, contexte):

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

return (out) 

Maintenant, si vous le tester devrait être bien.

Retour à la passerelle API Dans la section « Chaînes de requête » mis en entrée = randomname

Il devrait maintenant revenir avec bonjour, randomname