AWS API GW, возвращающий документ / поток октетов, не работает - PullRequest
0 голосов
/ 14 мая 2019

Я использую лямбда-функцию за API GW, настроенным без интеграции прокси.Если я настрою API GW для возврата application / json, то все в порядке.Возвращение application / octet-stream не работает корректно.Моя лямбда возвращает что-то вроде этого (двоичные данные в кодировке base64):

     bodyReturn = {
        headers: {
          "x-amazon-apigateway-binary-media-types" : [
              "application/json"
          ],
          'Accept': 'application/json',
          'Content-Type': 'application/json',
          "Access-Control-Allow-Origin": "'*'",
        },
        isBase64Encoded: true,
        body: Buffer.from(data.Body.toString(), 'binary').toString('base64')
     }

После того, как я убедился, что мое отображение работает нормально с application / json, я попытался переключиться на application / octet-stream.Для этого я обновил: Интеграционный ответ, предоставляющий сопоставление для application / octet-stream:

#set($inputRoot = $input.path('$'))
$inputRoot.body

Я также обновил двоичные типы носителей в настройках:

application/octet-stream

Когда я попыталсяМой API с вышеуказанными изменениями все еще отвечает на текстовую форму, что нормально, так как я еще не установил / contentHandling.

Теперь проблема начинается, когда я выполняю следующую команду для установки / contentHandling в CONVERT_TO_BINARY:

aws apigateway update-integration-response --rest-api-id xxx --resource-id xxx --http-method GET --status-code 200 --patch-operations '[{"op" : "replace", "path": "/contentHandling", "value" : "CONVERT_TO_BINARY"}]'

После того, как эта команда введена, журналы в облачном хранилище жалуются:

Endpoint response body before transformations: [Binary Data]
Execution failed due to configuration error: Unable to transform response

Любая идея, почему содержимое, возвращаемое моей лямбдой, внезапно считается двоичным, тогда как это все еще json?

Кроме того, если я попытаюсь удалить параметр / contentHandling с помощью:

aws apigateway update-integration-response --rest-api-id xxx --resource-id xxx --http-method GET --status-code 200 --patch-operations '[{"op" : "replace", "path": "/contentHandling", "value" : ""}]'

Проблема не устранена, содержимое из моей лямбды по-прежнему считается двоичным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...