AWS Приложение ELB с интеграцией Lambda не возвращает двоичный файл - PullRequest
0 голосов
/ 11 марта 2020

Я разработал AWS лямбда-функцию, которая собирает указанный файл c * .zip и возвращает его вызывающей стороне. Я не использую AWS API Gateway. Вместо этого я использую Application Load Balancer (v2) с Lambda в качестве целевой группы.

Согласно документации здесь - https://docs.aws.amazon.com/elasticloadbalancing/latest/application/lambda-functions.html#respond -to-load-балансировщик , если я хочу вернуть двоичное содержимое Мне нужно сделать следующее:

  • Кодировать двоичное содержимое в Base64
  • Установить isBase64Encoded в true
  • Установить заголовок ответа. В моем случае их два: Content-Type: application / zip, Content-Disposition: вложение; filename = package.zip

Проблема заключается в следующем: когда я вызываю конечную точку с помощью Postman (это запрос POST с некоторыми параметрами в теле), я просто получаю закодированную строку в качестве тела ответа , Я использую функцию отправки и загрузки почтальона. Почтальон просто сохраняет строку в кодировке base64 из ответа в файле package.zip. Так что это просто текстовый файл с расширением zip.

Вот, например, официальный AWS пример для двоичных типов ответов: https://github.com/aws/elastic-load-balancing-tools/blob/master/application-load-balancer-serverless-app/binary_response/binary_response_27.py

Теперь я просто надеваю не понимаю, что здесь происходит не так. Либо ELB не декодирует двоичный контент, либо почтальон неправильно обрабатывает ответ.

Кто-нибудь знает, что может быть решением? Какие компоненты в этой цепочке создают проблемы?

Спасибо!

...