AWS Lambda返回文件

时间:2019-02-12 00:35:13

标签: scala amazon-web-services amazon-s3 aws-lambda aws-java-sdk

我正在使用Lambda从S3读取CSV文件,并希望将该文件返回给lambda函数的调用者。我不想通过outputstream打印文件-我想返回实际文件。有没有办法做到这一点?我得到这样的S3文件:

override def handleRequest(inputStream: InputStream,
                             outputStream: OutputStream,
                             context: Context): Unit = {
    ...
    val s3File = s3Client.getObject(bucketName, bucketKey)
}

如何返回实际文件(而不是将其转换为String并通过outputStream打印)?

1 个答案:

答案 0 :(得分:0)

以上操作可以通过nodejs服务器上的express aws lambda来完成。您可以使用package

提供的aws
// 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:我尚未测试以上代码。