Mou de barre-commande via AWS Passerelle API AWS Lambda (Python rapport Java)

0

La question

J'essaie de connecter un Mou de barre-commande pour une AWS Lambda (par le biais de la Passerelle API AWS).

J'ai été en mesure d'adapter le Bonjour, le Monde plan (écrit en Python) dans le Lambda section tutoriel. - Je configurer une passerelle API comme un déclencheur, puis avait Mou POST le slash-commande de l'API de point de terminaison. J'ai dû manuellement décoder le base64 corps, puis utilisez parse_qs pour convertir la chaîne de requête-comme corps POST dans un dictionnaire, où j'ai pu accéder à l'amende juste.

Mon vrai Lambda code est actuellement en Java, mais j'ai commencé avec le java de base exemple d'application du Guide pour les Développeurs. J'ai construit l'application, téléchargée le pot, et confirmé le bon gestionnaire qui a été appelé. J'ai mis en place un autre de la passerelle API et de relever un autre Mou de barre-commande à la nouvelle endpoin. Il échoue.

Le journal se présente comme:

java.lang.RuntimeException: An error occurred during JSON parsing
Caused by: java.io.UncheckedIOException: com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_OBJECT token
 at [Source: (ByteArrayInputStream); line: 1, column: 1]

Je suppose que cela signifie Mou est l'envoi de la requête même chaîne comme argument dans le corps POST, et pour une raison quelconque, quelque chose s'attend JSON d'entrée, pas seulement du texte. Je ne comprends pas pourquoi le Python gestionnaire étais d'accord avec la construction d'un dictionnaire d'événements et de faire le Lambda décoder le POST du corps, tandis que le Java gestionnaire n'est jamais appelé, mais il est en train de mourir avant que lors de la tentative de désérialiser le corps POST, pensant que c'est du JSON.

Les deux Lambdas et de l'API portails ont été mis en place avec l'habitude, par défaut, AFAICT.

amazon-web-services
2021-11-24 01:37:03
1

La meilleure réponse

0

J'ai résolu le problème en passant à l'aide de la HandlerStream exemple. Je peux alors obtenir le "corps" de l'événement, en Base64.decodeBase64, puis déballez les paramètres du formulaire avec UriParameterMap.l'analyser.

J'ai ensuite procédé à la réception d'un message textuel qui est venu de la Mou de barre oblique de commande et ensuite retourner une chaîne JSON que Mou attend.

2021-12-05 17:48:35

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................