使用相同的 s3 实例 ( "aws-sdk" ) 并在每个请求上改变凭据

Using Same s3 instance ( "aws-sdk" ) with varying the credentials on each request

案例:

我可以使用相同的 s3 客户端实例,但根据请求的用户凭据更改凭据吗?

像这样:

class S3Storage {
 private readonly s3: AWS.S3;

 constructor(config: S3Config) {
     this.s3 = new AWS.S3({
       accessKeyId: config.accessKeyId,
       secretAccessKey: config.secretAccessKey,
       apiVersion: config.apiVersion,
       region: config.region
     });
   }

 public myDownload (key: string, userData: any) {
  // alter credentials for this.s3 with the userData
 }
}

或者我应该在每次调用 myDownload 函数时创建 s3 客户端(使用提供的用户数据)。

我最终为每个请求创建了 S3 客户端,而不是缓存已经缓存的对象,因为在每次请求时系统都会获得一个临时生成的凭据。