在对我的 node.js 应用程序的多个请求中重复使用相同的 AWS.S3 实例
Reuse same instance of AWS.S3 in multiple requests to my node.js app
在每个请求中使用相同的 AWS.S3 实例是否安全?它会处理重新连接之类的事情吗?或者我是否需要在我的控制器操作中实例化 s3 客户端?
换句话说,我可以在控制器操作范围之外安全地实例化客户端吗:
const s3 = new AWS.S3(myAwsConfiguration);
async myControllerAction(ctx, next) {
let s3Object = null;
try {
s3Object = await s3.getObject({
'Bucket': bucket,
'Key': key,
}).promise();
} catch(e) {
ctx.throw(500, 'cannot fetch from s3');
}
}
还是必须在里面做:
async myControllerAction(ctx, next) {
const s3 = new AWS.S3(myAwsConfiguration);
let s3Object = null;
try {
s3Object = await s3.getObject({
'Bucket': bucket,
'Key': key,
}).promise();
} catch(e) {
ctx.throw(500, 'cannot fetch from s3');
}
}
据我了解:
是的,重复使用同一个实例是绝对安全的。s3 协议是无状态的,不存在可能丢失的维护连接。
在每个请求中使用相同的 AWS.S3 实例是否安全?它会处理重新连接之类的事情吗?或者我是否需要在我的控制器操作中实例化 s3 客户端?
换句话说,我可以在控制器操作范围之外安全地实例化客户端吗:
const s3 = new AWS.S3(myAwsConfiguration);
async myControllerAction(ctx, next) {
let s3Object = null;
try {
s3Object = await s3.getObject({
'Bucket': bucket,
'Key': key,
}).promise();
} catch(e) {
ctx.throw(500, 'cannot fetch from s3');
}
}
还是必须在里面做:
async myControllerAction(ctx, next) {
const s3 = new AWS.S3(myAwsConfiguration);
let s3Object = null;
try {
s3Object = await s3.getObject({
'Bucket': bucket,
'Key': key,
}).promise();
} catch(e) {
ctx.throw(500, 'cannot fetch from s3');
}
}
据我了解:
是的,重复使用同一个实例是绝对安全的。s3 协议是无状态的,不存在可能丢失的维护连接。