Я использую лямбда-функцию за 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" : ""}]'
Проблема не устранена, содержимое из моей лямбды по-прежнему считается двоичным.