gpt4 book ai didi

node.js - 如何在 aws lambda 处理程序中使用 multer-s3 作为中间件

转载 作者:太空宇宙 更新时间:2023-11-04 00:07:16 24 4
gpt4 key购买 nike

我正在尝试将 multipart/form-data 表单发送到 AWS-Lambda 方法。我需要能够将文件发送到 S3,并使用传入的字符串参数,我需要将元数据记录到 RDS。

现在,我可以使用 expressmulter-s3 执行此操作,如下所示;

var express = require('express');
var AWS = require('aws-sdk');
var multer = require('multer')
var multerS3 = require('multer-s3')

var s3 = new AWS.S3();
const app = express();

var upload = multer({
storage: multerS3({
s3: s3,
bucket: 'my-bucket-name',
metadata: function (req, file, cb) {
cb(null, Object.assign({}, req.body));
},
key: function (req, file, cb) {
cb(null, Date.now().toString() + '.fileExtension')
}
})
})

app.post('/data', upload.array('file'), function(req, res, next) {
// here using req.files, i can save metadata to RDS
})

我的问题是,是否可以在 AWS Lambda 方法中使用 multer-s3?如果答案是否定的,或者不推荐,您能给我指出正确的方向吗?

谢谢..

最佳答案

我知道问题发布已经有一段时间了,但为了将来可能会来到这里的人:

简短回答:不推荐。为什么?作为表单数据的一部分发送的文件有一些奇怪的处理,不确定是通过 API Gateway 还是 S3。我花了一整天的时间尝试使用与您提到的类似的方法从 SPA Angular 应用程序上传图像,但我就是无法使其工作:我能够访问请求中的文件(之前由 Multer 解析),并有效地将每个文件放入 S3 存储桶,但图像已损坏。不确定它是否适用于其他类型的文件,但这种方法需要更多的工作,而且感觉有点 hacky。从 AWS 帐户外部将文件上传到 S3 存储桶(即不使用任何 AWS 服务或 EC2 实例)的最佳且最简单的方法是,IMO,使用 Presigned URLs 。您可以查看this article这可能会为您指明正确的方向。

也就是说,您可以 configure API Gateway to allow your Lambda to receive binary files 。如果您使用无服务器,以下是一个可以让事情变得更容易的插件:https://github.com/maciejtreder/serverless-apigw-binary

关于node.js - 如何在 aws lambda 处理程序中使用 multer-s3 作为中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51683399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com