node.js - 使用 AWS Lambda 上传到 AWS S3

标签 node.js mongodb amazon-s3 aws-lambda

我使用node.js中的AWS Lambda和mongoDB数据库在AWS S3中上传图像,我使用以下代码使用aws s3上传图像:

    var fs = require('fs');
    var AWS = require('aws-sdk');
    var config = require('../../server/config');
    var Busboy = require('busboy');
    var busboyBodyParser = require('busboy-body-parser');
    AWS.config.update({ 
      accessKeyId: config.aws.accessKeyId,
      secretAccessKey: config.aws.secretAccessKey,
      region: config.aws.region
    });
    var s3 = new AWS.S3();

module.exports = function(app) {
    app.use(busboyBodyParser());

    app.post('/upload', function(req,res){
        var directory = req.body.directory;  
        var image = req.files.file.name;
        var contenttype = req.files.file.mimetype;
        if(req.body.directory) {
            var file = directory+'/'+image;
        } else {
            var file = image;
        }
        var data = req.files.file.data;
        var keys = {
            Bucket: req.body.bucket,
            Key: file,
            Body: data,
            ACL: 'public-read',
            ContentType: contenttype
        };
        s3.upload(keys, function(err, result) {
            if (err) {
               res.send({
                    isError:true,
                    status:400,
                    message:"File Not Uplaod",
                    data:err
                });
                } else {
                var data = {
                    Location: result.Location,
                    key:result.key,
                    Bucket:result.Bucket
                };
                res.send({
                    isError:false,
                    status:200,
                    message:"File Uplaod",
                    data:data
                });
            }
        });
    });
}

在这段代码中,我在本地 aws s3 中上传图像成功,但使用 AWS Lambda 此代码不起作用

最佳答案

您需要为 lambda 设置 IAM 角色才能访问 AWS

您还需要为您的 S3 存储桶创建策略

然后将 S3 策略附加到 Lamba IAM 角色。

完成上述操作后,您的 Lambda 将能够访问 S3。

关于node.js - 使用 AWS Lambda 上传到 AWS S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48576750/

相关文章:

mongodb - 将 Spring 安全 ACL 与 spring-data-mongodb 结合使用

mongodb - 如何从 Mongodb、casbah 获取数字值

python - AWS使用Lambda将文件从S3存储桶下载到Windows本地目录

node.js - PayPal REST API - RATE LIMIT REACHED 错误

javascript - 使用导出模块将多个参数传递给 NodeJS 回调

node.js - Mongo - 如有必要,在创建新条目时更新数据库

javascript - Streaming-s3 没有正确上传文件到 aws

javascript - node.js 等待可变长度数组类型的事件

mongodb - 从 docker-compose 配置 MongoDB 副本集

apache-spark - AWS Glue 可以抓取 Delta Lake 表数据吗?