У меня есть требование вернуть PNG из Amazon Lambda Java Function в API Amazon Rest API. Я построил функцию с прототипом функции, как это:Функция Java Amazon Lambda, возвращающая png на шлюз API
public static void generatePng(InputStream request, OutputStream response, Context context)
Запрос InputStream детализирует информацию, которая должна быть записана в образ. Реакция OutputStream - это то, что отправлено назад и является png-изображением. Я проверил код и знаю, что изображение, закодированное в выходном потоке, корректно, так как мой тест записывает это в файл, который я вижу в редакторе изображений.
Проблема, которая возникает у меня, связана с проводкой ответа функции Лямбды на шлюз API. В документах говорится исключительно о строковом ответе, но моя полезная нагрузка для ответа - это данные двоичного изображения.
В Интеграционном ответ Лямбда я попытался добавить отображения заголовка:
Content-Length integration.response.header.Content-Length
Content-Type integration.response.header.Content-Type
и картирование тела: content-type: image/png с шаблоном $ input.body
Я также добавил модель ответа image/png в разделе «Ответ на метод».
На тестирование API, ответ на вызов API не показывает изображение, хотя, а строка дамп изображения, начиная с правильного Png заголовка:
например: Response Body
?PNG
IHDR?
??~LIDATx? ...
заголовки ответа сделать шоу: { «Content-Type»: «изображение/PNG»}
кто-нибудь знает, как настроить Amazon шлюз API принимать изображения в качестве выходного сигнала вызова лямбда-функции и вернуть его обратно вызывающему?
В настоящее время API Gateway не поддерживает двоичные данные: https://forums.aws.amazon.com/thread.jspa?threadID=195218 –
В конце концов я Base64 закодировал изображение и ответил с помощью полезной нагрузки JSon PNG в качестве кодированного изображения base64. – theINtoy
То, что вы также можете сделать, - это загрузить сгенерированный PNG на S3 и вернуть ваш lambda 302 перенаправление на изображение через API-шлюз. Решил подобную проблему. – Theodor