AWS API GW返回的文档/八位字节流不起作用

时间:2019-05-14 19:16:43

标签: amazon-web-services aws-lambda aws-api-gateway

我在没有配置代理集成的API GW后面使用lambda函数。 如果我将API GW配置为返回application / json,那么一切都很好。 返回的应用程序/八位位组流无法正常工作。 我的Lambda返回的是这样的内容(以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。 为此,我更新了: 集成响应为应用程序/字节流提供了映射:

#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

有人知道为什么我的lambda返回的内容突然被视为二进制,而仍然是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" : ""}]'

问题仍然存在,我的lambda中的内容仍然被认为是二进制的。

0 个答案:

没有答案