【发布时间】:2020-09-25 13:10:27
【问题描述】:
我使用以下代码获取listBuckets(),
AmazonS3ClientBuilder s3 = AmazonS3ClientBuilder.standard().withRegion("us-east-1");
AmazonS3 s3Client = s3.build();
bucketList = s3Client.listBuckets();
这里有两件事:
- 它返回所有存在的 Bucket 的列表,与区域无关。
-
bucketList()的每个项目是Bucket仅包含以下属性:
bucket.getName()
bucket.getOwner()
bucket.getCreationDate()
它不包含可以提供它所在区域的字段/方法。
此外,当我尝试使用
获取此存储桶中Objects 的计数时
s3Client.listObjectsV2(bucket.getName()).getKeyCount())
我得到以下异常:
com.amazonaws.services.s3.model.AmazonS3Exception: The bucket is in this region: us-east-2. Please use this region to retry the request (Service: Amazon S3; Status Code: 301; Error Code: PermanentRedirect;
我完全理解错误,但我需要以下所有方面的帮助:
- 如何只为特定区域
listBuckets(),而不为每个区域创建s3Client。假设我的s3Client属于us-east-1,如何获取区域ap-south-1中所有存储桶的列表。 - 我如何知道
listBucket()响应中存在的每个存储桶的区域,因为只有name, owner, and creation date属性。 - 如何使用其他区域的 s3Client 获取其他区域的
Objects列表。
我猜这和headers有关。
还有额外的帮助(否则我将不得不问另一个问题)
- 在下载和上传对象时,如何显示对象的上传/下载进度,假设我的文件大小为 3GB,我需要一种方法来显示 50% 或一半填充的进度条可能显示 1.5 GB 已上传/下载。
【问题讨论】:
-
@mokugo-devops 大哥,再次需要你的帮助 :) .
标签: amazon-web-services amazon-s3