为什么API网关会破坏我的二进制文件?

Dan*_*umb 8 amazon-web-services aws-api-gateway

我有一个AWS API网关作为后端服务的代理:

{
  "apiKeySource": "HEADER", 
  "name": "-", 
  "createdDate": 1513820260, 
  "binaryMediaTypes": [
      "application/zip", 
      "application/octet-stream"
  ], 
  "endpointConfiguration": {
      "types": [
          "EDGE"
      ]
  }, 
  "id": "-"
Run Code Online (Sandbox Code Playgroud)

}

集成定义如下:

{
  "integrationResponses": {
      "200": {
          "responseTemplates": {
              "application/json": null
          }, 
          "statusCode": "200"
      }
  }, 
  "passthroughBehavior": "WHEN_NO_MATCH", 
  "timeoutInMillis": 29000, 
  "uri": "http://${stageVariables.backend}:7000/{proxy}", 
  "connectionType": "INTERNET", 
  "httpMethod": "ANY", 
  "cacheNamespace": "iv06s3", 
  "type": "HTTP_PROXY", 
  "requestParameters": {
      "integration.request.path.proxy": "method.request.path.proxy", 
      "integration.request.header.X-Source-IP": "context.identity.sourceIp"
  }, 
  "cacheKeyParameters": [
      "method.request.path.proxy"
  ]
 }
Run Code Online (Sandbox Code Playgroud)

我有一个端点,可以动态生成Zip文件并将其返回给请求者.

当我直接访问端点时,文件很好.当我通过API网关访问它时,它会被破坏.

损坏采用转换为原始文件中的字节形式0xEFBFBD.这是UTF-8'替换字符'.

我的请求已Accept设置为application/zip响应Content-Type: application/zip.

我的期望是API网关应该将其识别为二进制媒体类型并保留文件,但似乎很清楚它将其作为文本内容处理.

我究竟做错了什么?

Uri*_*a W 6

将“二进​​制媒体类型”设置为“multipart/form-data”为我解决了类似的问题。请参阅此处:AWS Api Gateway 作为 HTTP 代理正在破坏二进制上传的图像文件