AWS Лямбда-функция передает запросы на выборку двоичного двоичного объекта (PDF) из сервисного уровня и затем возвращает клиенту - PullRequest
0 голосов
/ 16 января 2020

Я создал лямбда-функцию, чтобы я мог использовать ее в целях проверки и затем передавать запрос на сервисный уровень. Затем ответ уровня обслуживания содержит двоичный двоичный объект (PDF), который проходит через лямбда-функцию, после чего шлюз API, наконец, достигает клиента.

Первая проблема, с которой мы столкнулись, заключалась в том, что PDF был преобразован или поврежден, только что возвращенный пустой PDF. А потом я нашел этот пост , который поначалу не имел для меня никакого смысла. Пока я не увидел это aws сделать c. Оказывается, необходимо закодировать двоичные данные в base64, а затем установить для индикатора isBase64Encoded значение true. В конечном итоге шлюз преобразует ответ обратно в двоичный двоичный объект.

TBH, я новичок в aws, и я не совсем понимаю, почему это так ... что плохого в прохождении исходного двоичного двоичного объекта, зачем нужны эти шаги преобразования?

Вот список вещей, которые я должен был сделать

  1. Настроил / как двоичный тип носителя на шлюзе. (Я пытался использовать application / pdf, но не сработал?)
  2. Убедитесь, что тело ответа от сервисного уровня не преобразовано в строку (я использую request и по умолчанию оно дает мне строку). Я отправляю encoding: null вместе с запросом
  3. . Когда я получаю данные буфера из сервисного уровня, я использую Buffer для преобразования тела ответа в кодировку base64.
  4. In лямбда-вывод, я устанавливаю isBase64Encoded в true

Наконец, получите неизмененный PDF ...

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

Кроме того, когда мы устанавливаем двоичный тип носителя для поддержки / , разве это не означает, что он принимает все типы носителей? Но я только хочу, чтобы PDF поддерживали.

1 Ответ

0 голосов
/ 18 января 2020

Это сделать c (https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-payload-encodings.html) сможет ответить на ваш вопрос. И есть две вещи, которые вы должны отметить:

  • Вы можете передать исходный двоичный файл (blob), а также двоичный файл в кодировке base64 через API Gateway. Ссылка: https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-content-encodings-examples-image-lambda.html
  • */* (или /) работает в вашем случае, но это означает, что шлюз API будет обрабатывать всю полезную нагрузку как двоичные данные, и это разбивает полезную нагрузку с текстом данные, например JSON полезная нагрузка. Таким образом, в идеале application/pdf следует использовать в качестве «типа двоичного носителя».
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...