AWS SDK - AmazonS3ClientBuilder 实例是否过期?

And*_*dre 1 java amazon-s3 amazon-web-services

我正在使用 JAVA AWS SDK 将数千张图像上传到我的 s3 存储桶。

我创建了一个静态类型 AmazonS3 变量来连接到存储桶。我正在上传数千张图片,上传时间超过 24 小时。

由于我使用的是静态对象,因此我只需连接到存储桶一次,线程就会进行上传。我想知道在此过程中会话是否会过期,以及正确的方法是否是每次发送图像之前都进行连接。

这就是我实例化它的方式:

return AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(credentials)).withRegion(Regions.US_EAST_1).build();
Run Code Online (Sandbox Code Playgroud)

谢谢!

wkl*_*wkl 5

您从构建器获取的对象AmazonS3(它是 的实例AmazonS3Client)不会维护与 S3 的持久连接。您使用它执行的每个操作(例如putObjectdeleteObject)都是一个单独的 HTTP 请求,并且每个操作都使用您提供的凭据进行签名。

因此,客户端的有效时间取决于您使用的凭据类型AWSStaticCredentialsProvider

  1. 如果您传递的对象BasicAWSCredentials(String accessKey, String secretKey)具有永久的、不过期的访问密钥和秘密密钥,那么您可以AmazonS3根据需要使用该对象。

  2. 如果您AWSStaticCredentialsProvider实际上正在包装BasicSessionCredentials对象,那么这些凭据最终会过期,因为会话凭据是临时的(会话凭据的有效期限为 15 分钟到 36 小时)。