1

我正在创建一个具有各种端点的 API 网关,其中一个从 S3 获取二进制文件对象,其中所有内容都在 Terraform 中定义。如果我使用预定义的 MIME 类型列表设置网关,它工作正常,例如:

resource "aws_api_gateway_rest_api" "my_api" {
...
    binary_media_types = [ "application/vnd.openxmlformats-officedocument.wordprocessingml.document", 
       "application/msword",
       "application/pdf" ]
...
}

问题是我不提前知道存储桶中将存在的所有 MIME 类型。如果我尝试使用通用二进制 MIME 类型,例如application/octet-stream我在响应正文中获得其他字符并且无法打开文件。我尝试过使用 MIME 类型,application/*但出现内部服务器错误(可能无法映射)。

集成响应设置将内容处理设置为直通,没有标头映射或映射模板。方法响应也只有 200 响应,没有标头或模型设置。

我见过一些关于 Lambda 的 Base64 字符串输出和 API Gateway 之间编码不正确的问题,但我的场景只是 S3 -> API Gateway。我查看了以下链接,但它们似乎对我没有帮助,因为它们使用预定义的二进制类型:

将 API Gateway 与 AWS 服务 S3 集成

API 网关内容编码

API 网关负载编码

有没有办法在 API Gateway 中允许通配符二进制类型,然后通过集成 Content-Type 传递到输出?或者,有没有办法使用通用 MIME 类型,例如application/octet-stream并阻止 API Gateway 添加其他字符?

4

0 回答 0