【问题标题】:How do I send a binary response with AWS Lambda with API Gateway in Node.js? [duplicate]如何在 Node.js 中使用带有 API 网关的 AWS Lambda 发送二进制响应? [复制]
【发布时间】:2017-05-20 16:04:32
【问题描述】:

我正在尝试设置一个 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 Gateway 二进制支持设置为允许“image/jpeg”,并尝试在方法响应和集成响应中设置内容类型。

方法响应:

集成响应:

【问题讨论】:

    标签: node.js amazon-web-services aws-lambda aws-api-gateway


    【解决方案1】:

    我在这里找到了答案:AWS Gateway API base64Decode produces garbled binary?

    当您在“创建方法”屏幕上选择 Lambda 函数时,它需要 CLI 命令来更改未在 AWS 控制台中公开的设置。

    【讨论】:

      【解决方案2】:

      你读过这个blog post吗?

      请按照这些说明操作并确保您的客户端正确发送 Content-Type 和 Accept 标头

      【讨论】:

      • 该博客文章示例用于二进制上传,我已成功完成,但我无法通过 Lamba 显示二进制图像。还有这篇文章,但它不使用 lambda。 docs.aws.amazon.com/apigateway/latest/developerguide/…
      • 博客文章演示了来自 API Gateway/Lambda 的缩略图的二进制响应,我认为这与您尝试做的非常相似。
      猜你喜欢
      • 1970-01-01
      • 2018-03-28
      • 2015-10-21
      • 1970-01-01
      • 2020-09-27
      • 1970-01-01
      • 1970-01-01
      • 2020-04-03
      • 2021-05-28
      相关资源
      最近更新 更多