Я разработал 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 не декодирует двоичный контент, либо почтальон неправильно обрабатывает ответ.
Кто-нибудь знает, что может быть решением? Какие компоненты в этой цепочке создают проблемы?
Спасибо!