首页 > 解决方案 > 如何操作 AWS API Gateway Lambda LAMBDA_PROXY 集成的请求接受标头

问题描述

我编写了一个小型 lambda 函数并使用无服务器框架部署到 AWS。它提供了一个返回 png 文件的函数。

如何操作对 API 网关的请求,以便所有请求都设置了“接受:图像/png”,而不管来源如何?还是有另一种方法来确保响应始终是二进制而不是base64?

源代码

处理程序代码从磁盘加载 png 图像,然后返回带有 base64 编码输出图像的响应对象。

// handler.js
'use strict';

const fs = require('fs');
const image = fs.readFileSync('./1200x600.png');

module.exports = {
    image: async (event) => {
        return {
            statusCode: 200,
            headers: {
                "Content-Type": "image/png",
            },
            isBase64Encoded: true,
            body: image.toString('base64'),
        };
    },
};

无服务器配置设置功能并使用“serverless-apigw-binary”和“serverless-apigwy-binary”插件为响应设置内容处理和二进制 mime 类型。

# serverless.yml
service: serverless-png-facebook-test

provider:
  name: aws
  runtime: nodejs8.10

functions:
  image:
    handler: handler.image
    memorySize: 128
    events:
      - http:
          path: image.png
          method: get
          contentHandling: CONVERT_TO_BINARY

plugins:
  - serverless-apigw-binary
  - serverless-apigwy-binary

custom:
  apigwBinary:
    types:
      - 'image/*'

包.json

{
  "name": "serverless-png-facebook-test",
  "version": "1.0.0",
  "main": "handler.js",
  "license": "MIT",
  "dependencies": {
    "serverless-apigw-binary": "^0.4.4",
    "serverless-apigwy-binary": "^1.0.0"
  }
}

标签: aws-lambdaaws-api-gatewayserverless-framework

解决方案


推荐阅读