2017-02-12 4 views
3

Я создал лямбду AWS в Python 2.7, который получает идентификатор, извлекает файл из s3 ведра и превращает его в base64:AWS API шлюз возвращает двоичный файл с ошибкой base64 браузера

response = s3.Object(s3_bucket, r['prefix'] + str(id)).get() 
data = base64.b64encode(response['Body'].read()) 
return data 

Все правильно , сгенерированный base64 проверяется и исправляется. Это jpeg.

Сейчас на апи шлюз:

  • создать API
  • добавить в Binary поддержка бинарного типа носителя: изображение/JPEG
  • добавить метод GET к ресурсам.
  • добавить метод ответа HTTP Status: 200 модели: изображение/JPEG => Empty
  • добавить Content-Type: = изображение/JPEG в "ИНТЕГРАЦИЯ ответ" статус 200> "Body Mapping Шаблоны"

С это шаблоны:

$util.base64Decode($input.body) 

Deploy API, тест ... и Browser сказал: изображение не может быть отображено, поскольку она содержит ошибки.

Я пробовал сотни различных версий без результата. Какая у меня ошибка?

+0

Это не понятно, почему вы хотите, чтобы вернуть изображение в base64, но если у вас есть свои причины, не нужно добавить что-то вроде 'Content-Encoding: base64' чтобы браузер понимал, с чем он имеет дело? –

+0

Функция лямбда возвращает изображение Base64. Я хочу, чтобы api gateway возвращает двоичный файл. Для этого я использую '$ util.base64Decode ($ input.body)', но не работает хорошо. – Amedeo

+0

Мои извинения, я неправильно прочитал ваш вопрос раньше. –

ответ

0

В конце концов, я узнал, что в настоящее время вы не можете решить эту проблему через веб-консоль. Как было предложено daveg, вы должны использовать CLI AWS, чтобы перейти к настройке contentHandling = CONVERT_TO_TEXT. Операция, которая, как я уже сказал, вы не можете сделать в веб-интерфейсе.

Для получения дополнительной информации: aws forum thread

Смежные вопросы