Slack / příkaz prostřednictvím AWS API Brána do AWS Lambda (Python versus Java)

0

Otázka

Snažím se připojit Slack slash-příkaz k AWS Lambda (prostřednictvím AWS API Gateway).

Byl jsem schopen se přizpůsobit Hello, World blueprint (napsaný v Pythonu) v Lambda tutorial sekce. Jsem nastavit API brána jako spoušť, pak měl Slack PSÁT slash-příkaz k API endpoint. Musel jsem ručně dekódovat base64 těla, pak použijte parse_qs převést řetězec dotazu-jako PŘÍSPĚVEK subjektu do slovníku, kde bych mohl pak přístup je v pořádku.

Mé skutečné Lambda kód je v současné době v Javě, ale začal jsem s java-základní ukázka aplikace od Vývojářů Průvodce. Postavil jsem aplikaci, nahrál jar, a potvrdil správnou handler byl nazýván. Založil jsem další API gateway a ukázal jiný Slack slash-příkaz na nový endpoin. To se nezdaří.

Log vypadá takto:

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]

Hádám, že tohle znamená, Slack posílá stejný dotaz string jako argument ve funkci těla, a z nějakého důvodu, něco očekává JSON vstup, ne jen text. Nechápu, proč Python kontakt byl v pořádku s budování událost, slovník a dělat Lambda dekódovat POST tělo, vzhledem k tomu, že Java handler se nikdy dostat volal, ale umírá dříve, než to, když se pokoušejí rekonstruovat PO těle, myslel, že je to JSON.

Obě Lambdy a API brány byly zřízeny s obvyklým výchozí, AFAICT.

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

Nejlepší odpověď

0

Ten problém jsem vyřešil přepnutím do pomocí HandlerStream příklad. Můžu pak dostat "tělo" z akce, Base64.decodeBase64, pak rozbalit formě parametry s UriParameterMap.parse.

Pak jsem se zpracovat příchozí text, který přišel z vůle lomítko příkaz a pak se vrátit řetězec JSON, že Slack očekává.

2021-12-05 17:48:35

V jiných jazycích

Tato stránka je v jiných jazycích

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