Folga barra de comando por meio do AWS Gateway de API para a AWS Lambda (Python versus Java)

0

Pergunta

Eu estou tentando conectar-se uma margem de atraso de barra de comando para um AWS Lambda (através do AWS Gateway de API).

Eu era capaz de adaptar-se as Olá, Mundo blueprint (escrito em Python) na Lambda seção do tutorial. Para configurar um gateway de API como um gatilho, então tinha Folga POST a barra de comandos para a API de ponto de extremidade. Eu tinha manualmente decodificar base64 corpo, em seguida, usar parse_qs para converter a seqüência de caracteres de consulta-como o POST do corpo em um dicionário, onde eu poderia, então, o acesso é apenas multa.

A minha real Lambda código está atualmente em Java, mas eu comecei com java-básico aplicativo de exemplo do Guia de Desenvolvedores. Eu construí o aplicativo, carregou o jar, e confirmou o manipulador correto estava sendo chamado. Eu configurar outro gateway de API e apontou um diferente Folga barra de comando no novo endpoin. Ele falha.

O registo se parece com:

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]

Eu estou supondo que isso significa que a Folga é de enviar a mesma seqüência de caracteres de consulta-como argumento no corpo do POST, e por algum motivo, algo está esperando JSON de entrada, e não apenas texto. Eu não entendo por que o Python processador estava mais bonita com a construção de um evento dicionário e fazer o Lambda decodificar o POST do corpo, enquanto que o Java manipulador é nunca ser chamado, mas é de morrer antes de que ao tentar desserializar o corpo do POST, pensando que é JSON.

Ambos os Lambdas e API gateways foram definidas com o habitual padrões, AFAICT.

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

Melhor resposta

0

Eu resolvi o problema de passar a usar o HandlerStream exemplo. Eu, em seguida, pode obter o "corpo" do evento, em Base64.decodeBase64-lo, em seguida, descompacte os parâmetros de formulário com UriParameterMap.analisar.

Eu, então, processar a entrada de texto que veio da Folga da barra de comandos e, em seguida, retornar uma seqüência de caracteres de JSON que Folga espera.

2021-12-05 17:48:35

Em outros idiomas

Esta página está em outros idiomas

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