如何使用适用于 S3 的 AWS Java SDK 查询 AWS S3 存储桶以匹配对象(文件)名称
how to query AWS S3 bucket for matching objects(files) names using AWS Java SDK for S3
我能够在 S3 存储桶中搜索包含 test123 的文件名。我稍微编辑了一些路径,因为这是下面代码示例中的生产数据查询。我试图在 AWS 文档中搜索 SDK V2,但没有成功。如果有任何方法可以使用类似于 AWS CLI 的 AWS SDK 来执行此操作,您能否分享一下?如果任何人都可以共享对样本的引用,那将会很有帮助。谢谢
$ aws s3api list-objects --bucket <bucket-name> --query "Contents[?contains(Key, '1018441')]"
结果:
{
"LastModified": "2020-11-31T20:36:28.000Z",
"ETag": "\"b861daa5cc3775f38519f5de6566cbe7\"",
"StorageClass": "STANDARD",
"Key": "clients/<client name>/programs/0ced4d20939fe16978df9e6d8f8985ad/test123-94343.pdf",
"Owner": {
"DisplayName": "owner",
"ID": "123"
},
"Size": 27032
}
import com.amazonaws.services.s3.model.*;
public List<S3ObjectSummary> execute(String key) {
var keyLower = key.toLowerCase();
var keys = new ArrayList<S3ObjectSummary>();
ListObjectsV2Request request = new ListObjectsV2Request().withBucketName(bucketName);
ListObjectsV2Result result;
try {
do {
result = s3Client.listObjectsV2(request);
result.getObjectSummaries()
.stream()
.filter(obj -> obj.getKey().toLowerCase().contains(keyLower))
.forEach(keys::add);
var token = result.getContinuationToken();
request.setContinuationToken(token);
} while (result.isTruncated());
} catch (AmazonS3Exception e) {
LOG.error(e.getAdditionalDetails().entrySet().toString());
throw e;
}
return keys;
我能够在 S3 存储桶中搜索包含 test123 的文件名。我稍微编辑了一些路径,因为这是下面代码示例中的生产数据查询。我试图在 AWS 文档中搜索 SDK V2,但没有成功。如果有任何方法可以使用类似于 AWS CLI 的 AWS SDK 来执行此操作,您能否分享一下?如果任何人都可以共享对样本的引用,那将会很有帮助。谢谢
$ aws s3api list-objects --bucket <bucket-name> --query "Contents[?contains(Key, '1018441')]"
结果:
{
"LastModified": "2020-11-31T20:36:28.000Z",
"ETag": "\"b861daa5cc3775f38519f5de6566cbe7\"",
"StorageClass": "STANDARD",
"Key": "clients/<client name>/programs/0ced4d20939fe16978df9e6d8f8985ad/test123-94343.pdf",
"Owner": {
"DisplayName": "owner",
"ID": "123"
},
"Size": 27032
}
import com.amazonaws.services.s3.model.*;
public List<S3ObjectSummary> execute(String key) {
var keyLower = key.toLowerCase();
var keys = new ArrayList<S3ObjectSummary>();
ListObjectsV2Request request = new ListObjectsV2Request().withBucketName(bucketName);
ListObjectsV2Result result;
try {
do {
result = s3Client.listObjectsV2(request);
result.getObjectSummaries()
.stream()
.filter(obj -> obj.getKey().toLowerCase().contains(keyLower))
.forEach(keys::add);
var token = result.getContinuationToken();
request.setContinuationToken(token);
} while (result.isTruncated());
} catch (AmazonS3Exception e) {
LOG.error(e.getAdditionalDetails().entrySet().toString());
throw e;
}
return keys;