Slack slash-AWS API Ağ Geçidi üzerinden AWS Lambda'ya komut (Java'ya karşı Python)

0

Soru

Bir Slack slash komutunu bir AWS Lambda'ya (AWS API Ağ Geçidi üzerinden) bağlamaya çalışıyorum.

Lambda eğitimi bölümünde Merhaba, Dünya planını (Python ile yazılmış) uyarlayabildim. Tetikleyici olarak bir API ağ geçidi kurdum, sonra Slack eğik çizgi komutunu API bitiş noktasına göndermesini sağladım. Base64 gövdesini manuel olarak çözmek zorunda kaldım, daha sonra sorgu dizesi benzeri POST gövdesini bir sözlüğe dönüştürmek için parse_qs kullandım, daha sonra gayet iyi erişebildim.

Gerçek Lambda kodum şu anda Java'da, ancak Geliştiriciler Kılavuzu'ndan java-basic örnek uygulamasıyla başladım. Uygulamayı oluşturdum, kavanozu yükledim ve doğru işleyicinin çağrıldığını doğruladım. Başka bir API ağ geçidi kurdum ve yeni uç noktaya farklı bir Eğik çizgi komutu işaret ettim. Başarısız.

Kütük şöyle görünüyor:

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]

Sanırım bu, Slack'in POST gövdesinde aynı sorgu dizesi benzeri argümanı gönderdiği anlamına geliyor ve bazı nedenlerden dolayı, bir şey sadece metin değil, JSON girişini bekliyor. Python işleyicisinin neden bir olay sözlüğü oluşturmakta ve Lambda'nın POST gövdesini çözmesini sağlamakta sorun yaşamadığını anlamıyorum, oysa Java işleyicisi hiçbir zaman çağrılmıyor, ancak POST gövdesini serileştirmeye çalışırken bundan önce ölüyor, JSON olduğunu düşünüyor.

Hem Lambda'lar hem de API ağ geçitleri normal varsayılanlarla kuruldu, AFAICT.

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

En iyi cevabı

0

HandlerStream örneğini kullanarak geçiş yaparak sorunu çözdüm. Daha sonra" bedeni " olaydan alabilirim, Base64.decodeBase64, daha sonra form parametrelerini UriParameterMap ile açın.ayrıştırmak.

Daha sonra Slack eğik çizgi komutundan gelen gelen metni işlerim ve ardından Slack'in beklediği bir JSON dizesini döndürürüm.

2021-12-05 17:48:35

Diğer dillerde

Bu sayfa diğer dillerde

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