我正在使用Lambda从S3读取CSV文件,并希望将该文件返回给lambda函数的调用者。我不想通过outputstream
打印文件-我想返回实际文件。有没有办法做到这一点?我得到这样的S3文件:
override def handleRequest(inputStream: InputStream,
outputStream: OutputStream,
context: Context): Unit = {
...
val s3File = s3Client.getObject(bucketName, bucketKey)
}
如何返回实际文件(而不是将其转换为String并通过outputStream
打印)?
答案 0 :(得分:0)
以上操作可以通过nodejs
服务器上的express
aws lambda来完成。您可以使用package
// lambda.js
'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) }
// app.js
// refer the examples for complete code
// https://github.com/awslabs/aws-serverless-express/blob/master/examples/basic-starter/app.js
...
router.get('/download', (req, res) => {
s3.getObject({Bucket: myBucket, Key: myFile},function(err,data){
if (err) {
// report error and return the server error
return res.status(500).send("Error!");
}
// set the http Headers
res.set("Content-Length",data.ContentLength)
.set("Content-Type",data.ContentType);
// send the data
res.send(data.Body);
});
});
...
PS:我尚未测试以上代码。