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.