[英]how to query AWS S3 bucket for matching objects(files) names using AWS Java SDK for S3
我能夠在 S3 存儲桶中搜索包含 test123 的文件名。 我稍微修改了路徑的一些部分,因為這是以下代碼示例中的生產數據查詢。 我嘗試搜索 SDK V2 的 AWS 文檔,但沒有成功。 如果有任何方法可以使用類似於 AWS CLI 的 AWS 開發工具包來做到這一點,您能否分享一下? 如果任何人都可以分享對樣本的參考,那將會很有幫助。 謝謝
$ 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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.