Estoy usando la puerta de enlace API para activar una función Lambda, usando la integración de Lambda Proxy, sin embargo, el cuerpo de la solicitud está codificado en base64, ¿por qué? y ¿cómo puedo cambiarlo para que sea JSON para encadenar JSON?
Esto se debe a que está utilizando la integración de proxy de Lambda en API Gateway. Si usa la integración de Lambda, estará bien y podrá obtener JSON.
También puede cambiarlo para que sea JSON para encadenar JSON con el siguiente método.
let buff = Buffer.from(event.body, "base64"); let eventBodyStr = buff.toString('UTF-8'); let eventBody = JSON.parse(eventBodyStr);Si entiendo su pregunta correctamente, está enviando una carga útil JSON no codificada en base64 como solicitud a la puerta de enlace API, sin embargo, su Lambda la recibe como una cadena codificada en base64.
Parece que no está configurando application/json como su content-type solicitud. Puede ver en esta tabla cómo la puerta de enlace API decide si la Integration Request Payload (última columna) es Base64-encoded string o algún otro tipo.