首页 > 解决方案 > 使用 aws lambda 和 node.js 在 API 端点上显示图像

问题描述

现在我正在编辑 AWS lambda 上的内联代码。这是我目前拥有的:

var qrImage = require('qr-image');


exports.handler = async (event) => {
    return sendRes(200,'hi');
};
/*
const sendRes = (status, body) => {
  var response = {
    statusCode: status,
    headers: {
      "Content-Type": "text/html"
    },
    body: body
  };
  return response;
}; 
*/

const sendRes = (status, body) => {
  const svg_string = qrImage.imageSync('http://www.nodejs.org',{ type: 'png', size: 20 });
  var response = {
    statusCode: status,
    headers: {
      "Content-Type": "image/jpeg"
    },
    body: svg_string
  };
  return response;
};

这将输出文本内部服务器错误。

下面的代码创建一个 png 文件并存储它。我想要的 lambda 功能是在我访问端点时简单地显示图像(不涉及保存)。但我不确定如何去做(Lamda 的新手,Node.js)。我到底应该调查什么?

var qrImage = require('qr-image');
var fs = require('fs');

qrImage
    .image("http://www.nodejs.org", {type:'png', size:20})
    .pipe(fs.createWriteStream("MyQRCode.png"));

编辑 我做了一些小改动,这似乎正在工作

var qrImage = require('qr-image');

exports.handler = async (event) => {
    return sendRes(200,'hi');
};

const sendRes = (status, body) => {
  const svg_string = qrImage.imageSync('this is AWS!', { type: 'svg', size: 10 });
  var response = {
    statusCode: status,
    headers: {
      "Content-Type": "image/svg+xml"
    },
    body: svg_string
  };
  return response;
};

标签: node.jsamazon-web-servicesaws-lambda

解决方案


如果您只是在 lambda 的帮助下返回图像,那么同步也将起作用,这里是它的代码

const sendRes = (status, body) => {
  const svg_string = qr.imageSync('http://www.nodejs.org', { type: 'png', size: 20 });
  var response = {
    statusCode: status,
    headers: {
      "Content-Type": "image/jpeg"
    },
    body: svg_string
  };

  return response;
};

推荐阅读