【问题标题】:AWS API Gateway Gzipped JSON fileAWS API Gateway Gzipped JSON 文件
【发布时间】:2017-07-26 16:09:55
【问题描述】:

我必须设置一个 API 端点,该端点以大约 18mb JSON 文件* 的目录文件进行响应,这超出了 API 网关 6mb 的限制。

我可以 gzip 将文件压缩到 256kb,但是在 API Gateway 中,您不能将 Content-Encoding 设置为 gzip。

去年 11 月,他们开始允许使用 binaryMIMETypes,但是我看到的示例也要求数据进行 base64 编码(Standard Lambda ExampleServerless Example)。这将要求客户端不仅要处理 GZIP,还要处理 Base64。

但是 (aws-serverless-express example) 似乎包含 app.use(compression(()),这让我认为可以发送压缩后的 JSON 响应。

我尝试使用 aws-serverless-express 示例,但是当我尝试 npm run setup 时,它无法创建/更新云形成堆栈。

我有一个使用以下代码工作的本地节点/Express 端点

var express    = require('express'); 
var app        = express();       
var compression = require('compression');
var jsonfile = require('jsonfile');
const cors = require('cors');
var router = express.Router(); 

app.use('/api', router);
app.use(compression())
app.use(cors())

var port = process.env.PORT || 8080;

router.get('/', function(req, res) {
    var file = './data/catalogue.json'
    jsonfile.readFile(file, function(err, obj) {
        res.json(obj);   
    })  
});
app.listen(port);

我对 Lambda 和 API Gateway 非常陌生,因此对于这样一个新手问题,我深表歉意。任何人都可以提供有关如何将 Lambda/API 网关与 Gzip JSON 文件一起使用的任何帮助或建议。

【问题讨论】:

    标签: json node.js amazon-web-services lambda


    【解决方案1】:

    这不是一个很好的方法(即使没有 6MB 的限制)。

    请记住,在使用 AWS Lambda 时,每 100 毫秒向您收费。如果您将它发送给很多用户,并且每个用户都需要一些时间来下载它,那么您将花费很多。

    我的建议是你把它存储在 S3 上(速度非常快),将 S3 链接发送给客户端,让客户端从 S3 下载。

    【讨论】:

    • 我花了一些时间才让 AWS 服务代理正常工作,但这是一种非常聪明的方法。
    猜你喜欢
    • 2015-12-04
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    相关资源
    最近更新 更多