我在AWS Lambda上有一个函数,它的目的是从REST API中获取一个.zip,提取其内容,然后使用另一个查看器应用程序显示其内容。我使用expressjs进行路由,并使用request模块处理请求。
我的app.js看起来像这样:
app.get('/', function(req, res) {
var r = request(queryURL); // Where queryURL is a get request to fetch a .zip file
r.on('response', function(response) {
response.pipe(fs.createWriteStream('/tmp/testFile.zip'))
.on('close', function() {
res.send('Test message');
})
})
})
module.exports = app;问题似乎出在response.pipe(fs.createWriteStream(...));上,我可以获取一个不相关的html并将其通过管道传输到/tmp/testFile.html中,然后用res.sendFile('/tmp/testFile.html')对其进行渲染。我甚至可以从相同的API中获取单个图像。但是关于.zip文件的一些东西破坏了一些东西。
这一切在本地运行时都有效,但当我将其上传到lambda时,它就会中断,在浏览器上呈现{"message": "Internal server error"}。我不知道如何访问日志-我使用ClaudiaJS上传我的函数。
下面是我的处理程序函数,以防可能相关:
'use strict'
const awsServerlessExpress = require('aws-serverless-express')
const app = require('./app')
const server = awsServerlessExpress.createServer(app)
exports.handler = (event, context) => awsServerlessExpress.proxy(server, event, context)谢谢!
发布于 2017-08-18 03:11:58
最后弄清楚了如何访问cloudwatch日志,并意识到Lambda超时了。我将超时时间从3秒改为30秒,从那以后它一直工作得很好。
https://stackoverflow.com/questions/45701630
复制相似问题