Allentamento della barra di comando tramite AWS Gateway API AWS Lambda (Python rispetto a Java)

0

Domanda

Sto cercando di collegare un Allentamento della barra di comando di una AWS Lambda (attraverso il Gateway API AWS).

Sono stato in grado di adattare il Ciao, Mondo blueprint (scritto in Python) in Lambda sezione tutorial. Ho configurato un gateway API come un trigger, quindi aveva Slack POST la barra di comando per l'endpoint API. Ho dovuto manualmente decodifica base64 corpo, quindi utilizzare parse_qs per convertire la stringa di query come corpo POST in un dizionario, in cui ho potuto accedere quindi va bene.

Il mio vero Lambda codice è attualmente in Java, ma ho iniziato con java-esempio di base dell'app da parte degli Sviluppatori Guida. Ho creato l'app, caricato il vaso, e conferma la corretta gestore è stato chiamato. Ho impostato un altro gateway API e ha una diversa Allentamento della barra di comando presso il nuovo endpoin. Non riesce.

Il registro si presenta come:

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]

Sto indovinando questo significa Slack è l'invio della stessa stringa di query come argomento nel corpo del POST, e per qualche ragione, qualcosa è in attesa di JSON ingresso, non solo il testo. Non capisco perché il Python gestore era a posto con la costruzione di un dizionario di evento e fare il Lambda decodificare il corpo del POST, mentre il Java gestore non viene sempre chiamato, ma muore prima che durante il tentativo di deserializzare il corpo del POST, pensando che sia JSON.

Entrambe le espressioni Lambda e API gateway sono stati istituiti con le solite impostazioni predefinite, AFAICT.

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

Migliore risposta

0

Ho risolto il problema passando a utilizzando il HandlerStream esempio. Poi posso ottenere il "corpo" dell'evento, Base64.decodeBase64, quindi decomprimere i parametri del modulo con UriParameterMap.analizzare.

Ho quindi elaborare il testo in entrata che è venuto dal rallentamento della barra di comando e quindi restituire una stringa JSON che il Ristagno si aspetta.

2021-12-05 17:48:35

In altre lingue

Questa pagina è in altre lingue

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