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.