我正在使用AWS Java SDK与S3进行交互。我想遍历存储中的所有对象并检索每个对象的元数据。我可以使用列表迭代对象:
ObjectListing list= s3client.listObjects("bucket name");
但我只能通过列表中的对象检索摘要。我需要每个对象的元数据,而不是摘要,就像S3Object类中getObjectMetadata()
方法提供的元数据一样。我怎么做到的?
答案 0 :(得分:6)
您可以从lisObject返回的objectSummary中获取四个默认元数据:Last Modified, Storage Type, Etag and Size.
要获取对象的元数据,您需要对对象执行HEAD object请求,或者在对象上调用以下方法:
GetObjectMetadataRequest(String bucketName, String key)
看看这个:
ListObjectsRequest listObjectsRequest = new ListObjectsRequest()
.withBucketName(bucketName);
ObjectListing objectListing;
do {
objectListing = s3client.listObjects(listObjectsRequest);
for (S3ObjectSummary objectSummary
: objectListing.getObjectSummaries()) {
/** Default Metadata **/
Date dtLastModified = objectSummary.getLastModified();
String sEtag = objectSummary.getETag();
long lSize = objectSummary.getSize();
String sStorageClass = objectSummary.getStorageClass();
/** To get user defined metadata **/
ObjectMetadata objectMetadata = s3client.getObjectMetadata(bucketName, objectSummary.getKey());
Map userMetadataMap = objectMetadata.getUserMetadata();
Map rowMetadataMap = objectMetadata.getRawMetadata();
}
listObjectsRequest.setMarker(objectListing.getNextMarker());
} while (objectListing.isTruncated());
有关GetObjectMetadataRequest的更多详细信息,请查看此link。