Moale slash-comandă prin AWS API Gateway la AWS Lambda (Python vs Java)

0

Problema

Am încercat să se conecteze o Moale slash-comanda la un AWS Lambda (prin AWS API Gateway).

Am fost capabil să se adapteze Hello, World plan (scris în Python) în Lambda secțiunea tutorial. Am înființat un API gateway ca un declanșator, apoi a avut Moale POST slash-comanda la API-ul final. Am avut de a decoda manual base64 corpul, apoi utilizați parse_qs pentru a converti șirul de interogare-cum ar fi POST corpul într-un dicționar, în cazul în care am putea accesa apoi foarte bine.

Meu real Lambda cod este în prezent în Java, dar am inceput cu java de bază aplicație eșantion de Dezvoltatorii Ghid. Am construit aplicația, încărcate borcan, și a confirmat corectă handler a fost numit. Am înființat un alt API gateway și a arătat o altă Moale slash-comanda la noi endpoin. Ea nu reușește.

Jurnalul arata ca:

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]

Bănuiesc că asta înseamnă Moale este de a trimite același șir de interogare-ca argument în POST corpului, și pentru un motiv oarecare, ceva se așteaptă JSON de intrare, nu doar text. Nu înțeleg de ce Python handler a fost de acord cu construirea unui eveniment dicționar și de a face Lambda decoda POST organism, întrucât Java handler este niciodată numit, dar este pe moarte înainte că, atunci când încearcă să deserialize POST corp, gândindu-mă că JSON.

Ambele Lambda și API gateway-uri au fost înființate cu de obicei implicite, AFAICT.

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

Cel mai bun răspuns

0

Am rezolvat problema prin trecerea la utilizarea HandlerStream exemplu. Pot apoi sa "corpul" de la eveniment, Base64.decodeBase64, apoi despachetați parametri de formă cu UriParameterMap.analiza.

Apoi am procesului de intrare text care a venit de la Slack slash comandă și apoi să se întoarcă un șir de JSON Moale care se așteaptă.

2021-12-05 17:48:35

În alte limbi

Această pagină este în alte limbi

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