如何在 Node.js 中使用带有 API 网关的 AWS Lambda 发送二进制响应?
How do I send a binary response with AWS Lambda with API Gateway in Node.js?
我正在尝试设置 Lambda 和 API 网关,它将执行 s3.getObject() 并输出二进制图像作为响应。最终我想从 s3 中提取图像并动态调整大小而不是将它们保存回 s3,但是我似乎无法输出简单的图像。
我的简单 lambda 看起来像这样:
'use strict';
const http = require('http');
exports.handler = (event, context, callback) => {
http.get('http://i.stack.imgur.com/PIFN0.jpg', function(res) {
var body = '';
res.on('data', function(chunk) {
// Agregates chunks
body += chunk;
});
res.on('end', function() {
callback(null, body);
});
});
};
我已将 API 网关二进制支持设置为允许 'image/jpeg',并且我已尝试在方法响应和集成响应中设置内容类型。
方法响应:
集成响应:
你读过这个blog post吗?
请按照这些说明进行操作,确保您的客户正确发送 Content-Type 并接受 headers
我在这里找到了答案:
当您在“创建方法”屏幕上 select Lambda 函数时,它需要一个 CLI 命令来更改未在 AWS 控制台中公开的设置。
我正在尝试设置 Lambda 和 API 网关,它将执行 s3.getObject() 并输出二进制图像作为响应。最终我想从 s3 中提取图像并动态调整大小而不是将它们保存回 s3,但是我似乎无法输出简单的图像。
我的简单 lambda 看起来像这样:
'use strict';
const http = require('http');
exports.handler = (event, context, callback) => {
http.get('http://i.stack.imgur.com/PIFN0.jpg', function(res) {
var body = '';
res.on('data', function(chunk) {
// Agregates chunks
body += chunk;
});
res.on('end', function() {
callback(null, body);
});
});
};
我已将 API 网关二进制支持设置为允许 'image/jpeg',并且我已尝试在方法响应和集成响应中设置内容类型。
方法响应:
集成响应:
你读过这个blog post吗?
请按照这些说明进行操作,确保您的客户正确发送 Content-Type 并接受 headers
我在这里找到了答案:
当您在“创建方法”屏幕上 select Lambda 函数时,它需要一个 CLI 命令来更改未在 AWS 控制台中公开的设置。