【发布时间】:2021-04-25 12:36:19
【问题描述】:
环境: Node.js、Express、AWS-SDK
目前我的AWS.S3 实例是位于我的中间件顶部的全局变量。
const s3 = new AWS.S3({
apiVersion: '2006-03-01',
accessKeyId: process.env.S3_ACCESS_KEY_ID,
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
region: process.env.S3_REGION
});
app.get('/page1', function(req, res) {
});
app.get('/page2', function(req, res) {
});
我在各种不同的路线中使用AWS.S3。
我在后台异步使用deleteObject() 和upload() 方法。不过,我也将headObject() 与async/await 一起使用,因为我需要结果才能进行下一个操作。
为了避免某种类型的S3 冲突或其他意外问题,我应该在每个中间件的顶部放置一个AWS.S3 的新实例吗?我不确定这是否有必要。与Mongoose 相比,它只需要一个语句mongoose.connect() 并打开一个包含5 个连接的池,可供应用程序中的每条路由使用。
app.get('/', function(req, res) {
const s3 = new AWS.S3({
apiVersion: '2006-03-01',
accessKeyId: process.env.S3_ACCESS_KEY_ID,
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
region: process.env.S3_REGION
});
});
app.get('/page2', function(req, res) {
const s3 = new AWS.S3({
apiVersion: '2006-03-01',
accessKeyId: process.env.S3_ACCESS_KEY_ID,
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
region: process.env.S3_REGION
});
});
【问题讨论】:
标签: node.js amazon-web-services express aws-sdk