node.js - AWS 无服务器功能未响应图像

标签 node.js amazon-web-services serverless-framework aws-serverless

我正在尝试让 AWS API Gateway 使用图像进行响应。我的无服务器 Lambda 代码如下

const express = require('express');
const serverless = require('serverless-http');
const bodyParser = require('body-parser');
const request = require('request');
const fetch = require('node-fetch')
var Jimp = require('jimp');
const app = express()
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))

app.get('/image/:id', async(req, res) => {
    const id = req.params.id;

    var imgUrl = 'https://developer.salesforce.com/forums/profilephoto/729F00000005O41/T';
    let options = {};

    const image = await Jimp.read(imgUrl);
    image.getBuffer(Jimp.MIME_JPEG, (err, buffer) => {
        res.set('content-type', 'image/jpeg');
        res.send(buffer.toString('base64'));
    });
});
// wrap express app instance with serverless http function
module.exports.handler = serverless(app)

serverless.yml


provider:
  name: aws
  runtime: nodejs8.10
  stage: dev
  region: us-east-1
  memorySize: 512

custom:
  apigwBinary:
    types:           #list of mime-types
      - 'image/jpg'
      - 'image/jpeg'
      - 'image/png'
functions:
  avatarFunc:
    handler: index.handler
    events:
      - http:
          path: image/{id}
          method: get
          contentHandling: CONVERT_TO_BINARY

plugins:
  - serverless-offline
  - serverless-apigw-binary

返回的图像是一个黑匣子。 enter image description here

最佳答案

好的。我刚刚经历过这个并想分享解决方案。该问题与 Serverless 和 AWS 之间的不匹配有关。所以我们要把它们放在同一页面上。

首先->无服务器配置

const binaryMimeTypes = {binary: [
  'image/*',
  'image/jpeg',
  'image/png',
  'image/svg+xml',
]};

module.exports.server = sls(app, binaryMimeTypes) 

这将 Serverless 配置为将关联的 Mime 类型作为 Base64 提供服务。

第二->AWS配置

在 AWS API 中,选择网关,然后选择设置。向下滚动并添加以下二进制类型:

AWS Config

就是这样!现在应该可以工作了!

关于node.js - AWS 无服务器功能未响应图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54840576/

相关文章:

node.js - Telegram Bot 如何获取上传文件的file_id?

javascript - 定义未定义 Javascript Node

amazon-web-services - S3 存储桶访问仅限 VPN

serverless-framework - 对于不存在的端点,如何使无服务器返回 404 而不是 403?

node.js - 推荐的数据结构(不查询 node.js 中的嵌套数据)

javascript - 此代码是否有可能丢失一些匹配项?

amazon-web-services - AWS Serverless 资源从 v0.5 部署到 v1.0

python - 我如何使用 aws lambda 将文件写入 s3 (python)?

AWS 免费套餐中的 Hadoop?

mysql - 使用 Erwin 为 Amazon Redshift 创建 DDL