J'ai la fonction lambda suivante, avec un point de déclenchement API Gateway:
def lambda_handler(event, context): resp = { "statusCode": 200, "headers": { "Access-Control-Allow-Origin": "*", }, "body": "Hello, World!" } return resp
Lorsque je navigue vers le point de terminaison API, je m'attendais à ne voir que le texte "Hello, World!". Au lieu de cela, je vois la réponse JSON entière. Comment changer cette fonction pour qu'elle interprète les en-têtes et le code d'état comme tels, et non comme du contenu à rendre dans le navigateur?
4 Réponses :
Une option consiste à utiliser cette fonction en configurant l'option d'intégration du proxy lambda à partir de la passerelle API. Il ne vous renverra que le corps. Vous pouvez configurer rapidement. Voici le lien officiel. lien
Lambda et API Gateway ne sont pas censés être utilisés en tant que serveurs Web renvoyant du HTML. Ils ne sont même pas optimisés pour cela, ce serait un gaspillage de ressources.
Ce que vous devez faire, c'est héberger votre HTML ailleurs, utiliser JavaScript pour communiquer avec votre API, obtenir des données dynamiques, puis manipuler le HTML en fonction des réponses de l'API.
Si vous souhaitez une approche sans serveur pour l'hébergement HTML statique, je recommande S3 + CloudFront .
Cette réponse manque le point de la question, c'est pourquoi API Gateway a renvoyé l'intégralité de l'objet JSON au client au lieu de l'interpréter pour générer une réponse HTTP avec le corps, les en-têtes et le code d'état fournis. (Cela se produit si vous négligez d'utiliser la fonction d'intégration de proxy Lambda.)
Bien que vous ayez raison, j'estime toujours utile de fournir une vue d'ensemble, au lieu de répondre sans tenir compte du contexte et des implications d'une décision. Il y avait déjà une réponse à ce que vous aviez indiqué, mais elle n'avait pas été acceptée. Je ne vois aucun mal à publier une suggestion d'architecture alternative et d'utilisation d'une ressource cloud, comme je l'ai fait ...
En supposant que votre API Gateway utilise l'intégration du proxy Lambda, ajoutez simplement content-type: text / html
à votre réponse.
Ceci est dû à la façon dont le lambda est configuré avec la fonction lambda. On dirait qu'il est configuré en tant que proxy Lambda. Si vous souhaitez voir l'intégralité du JSON en tant que sortie, désactivez simplement l ' Utiliser l'intégration du proxy Lambda
. Vous pouvez trouver cette configuration dans la console API Gateway.
Activez l ' Intégration Utiliser le proxy Lambda
dans la console API Gateway pour afficher uniquement "Hello, World!"