我使用JAVA AWS SDK将数千张图片上传到我的s3存储桶。
我创建了一个静态类型的AmazonS3变量来连接到存储桶。我上传了数千张图片,上传时间超过24小时。
由于我使用静态对象,我只需连接到桶一次,然后线程进行上传。我想知道会话是否可以在此过程中到期,以及在发送图像之前每次连接是否正确。
这是我实例化的方式:
return AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(credentials)).withRegion(Regions.US_EAST_1).build();

谢谢!
答案 0 :(得分:2)
从构建器获取的AmazonS3
对象(AmazonS3Client
的实例)不会与S3保持持久连接。您使用它执行的每个操作(例如putObject
或deleteObject
)都是单独的HTTP请求,并且每个操作都使用您提供的凭据进行签名。
客户端有效期多长取决于您使用AWSStaticCredentialsProvider
包装的凭据类型。
如果您使用永久,未过期的Access和Secret密钥传递BasicAWSCredentials(String accessKey, String secretKey)
,则可以根据需要使用AmazonS3
对象。
如果您的AWSStaticCredentialsProvider
实际上正在包装BasicSessionCredentials
对象,那么这些凭据最终会过期,因为会话凭据是临时的(会话凭据有效期为15分钟到36小时之间)