amazon-web-services - 为什么 API 网关会损坏我的二进制文件?

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

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

{
  "apiKeySource": "HEADER", 
  "name": "-", 
  "createdDate": 1513820260, 
  "binaryMediaTypes": [
      "application/zip", 
      "application/octet-stream"
  ], 
  "endpointConfiguration": {
      "types": [
          "EDGE"
      ]
  }, 
  "id": "-"

}

集成定义在这里:
{
  "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"
  ]
 }

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

当我直接访问端点时,文件没问题。当我通过 API 网关访问它时,它被损坏了。

损坏的形式是原始文件中的字节被转换为 0xEFBFBD .这是UTF-8 'replacement character' .

我的请求有 Accept设置为 application/zip并且回复是 Content-Type: application/zip .

我的期望是 API Gateway 应该将其识别为二进制媒体类型,而不管文件,但它似乎很清楚它正在将其作为文本内容进行处理。

我究竟做错了什么?

最佳答案

将“二进​​制媒体类型”设置为“multipart/form-data”为我解决了类似的问题。
看这里:AWS Api Gateway as a HTTP Proxy is currupting binary uploaded image files

关于amazon-web-services - 为什么 API 网关会损坏我的二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52044438/

相关文章:

amazon-web-services - 如何通过 CloudFormation 设置 Amazon SNS 来发送通知?这可能吗?

java - Android 音频指纹实现

api - AWS API Gateway 基于 URI 的版本控制

amazon-web-services - 使用 Cloudformation SAM 的 AWS::Serverless::Api 资源策略

jquery - AWS API Gateway 不存在 'Access-Control-Allow-Origin' header

ios - 连接到 AWS IoT MQTT 主题的客户端数量

amazon-web-services - CloudFront 无法使用 S3 网站源,只能使用 REST 源 Cloudformation

oracle - 如何在 Amazon RDS 上的同一个 RDS 实例中创建第二个数据库架构?

amazon-web-services - 如何从执行角色有权这样做的 AWS Lambda 调用 AWS_IAM 授权的 API 网关终端节点?

amazon-web-services - API 网关授权和注销(性能/安全考虑)