isBase64Encoded 在 API Gateway 向 AWS Proxy Lambda 发出的请求中始终为 false

So *_*ins 9 amazon-web-services aws-lambda aws-api-gateway

所以我有这个 API 网关,它在 POST 上点击使用 AWS-PROXY 集成的 lambda。

我的请求类如下所示:

public class ApiGatewayProxyRequest {
    private String resource;
    private String path;
    private String httpMethod;
    private Map<String, String> headers;
    private Map<String, String> queryStringParameters;
    private Map<String, String> pathParameters;
    private Map<String, String> stageVariables;
    private Context context;
    private String body;
    private boolean isBase64Encoded;
    ... snip
}
Run Code Online (Sandbox Code Playgroud)

我正在通过 POST 请求发送文件的 API 网关,文件内容稍后可在我的 APIGatewayProxyRequest 的正文字段中使用,这一切都很好。

问题是我希望二进制数据进行 Base64 编码,并且所有非二进制数据保持原样。

因此,我向 API 网关的 BinaryMediaTypes 添加了多个二进制类型。这些文件(当正确设置 Content-Type 标头时)会导致文件在请求正文中正确编码为 base64。

现在我遇到的问题是:尽管 API 网关将文件正确编码为 base64,但请求中的 isBase64Encoded 字段从来都不是true,它总是被接收为 false。

知道为什么吗?根据文档,该字段应包含一个布尔标志,以指示适用的请求 Paylad 是否是 Base64 编码的。

https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html

谢谢