简体   繁体   English

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

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

The case :案子 :

  • I have multi-tenant system, and each tenant has his bucket and accessKeyId and accessSecret, and I am creating a wrapper above AWS.S3 to extend some functionality.我有多租户系统,每个租户都有他的存储桶和 accessKeyId 和 accessSecret,我正在 AWS.S3 之上创建一个包装器来扩展一些功能。

Can i use same instance of s3 client but alter the credentials based on the requesting user credentials?我可以使用相同的 s3 客户端实例但根据请求的用户凭据更改凭据吗?

Like this :像这样 :

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
 }
}

Or should i create s3 client (with provided userData) every time myDownload function is invoked.或者我应该在每次调用myDownload函数时创建 s3 客户端(使用提供的 userData)。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM