[英]Java AWS SDK v2: List bucket keys, but only the files
我正在為 S3 software.amazon.awssdk.s3
使用 AWS SDK v2。 我有一個桶,我列出了檢索對象的鍵。 我期望列出 object 個密鑰,並得到如下內容:
...
ACTIVE/somefile.jpg
ACTIVE/someotherfile.jpg
...
然而,上市過程也將返回根鍵可以這么說
ACTIVE/
當我 go 為密鑰ACTIVE/
運行GetOjbectRequest
時,它會拋出錯誤,因為您無法檢索它。 那么我如何傳遞我的請求,我要么只想列出實際對象的鍵,要么過濾我的響應,以便在GetOjbectRequest
之前我只有實際對象?
我的代碼目前如下所示:
List<String> activeRuleKeys = listObjectsV2Responses.stream()
.map(listObjectsV2Response -> listObjectsV2Response.contents())
.flatMap(s3Objects -> s3Objects.stream())
.map(s3Object -> s3Object.key())
.collect(Collectors.toList());
// Error happens below
List<String> ruleSet = activeRuleKeys.stream().map(s -> {
GetObjectRequest build = GetObjectRequest.builder().bucket(bucketName).key(s).build();
String ruleString = this.s3Client.getObject(build, ResponseTransformer.toBytes()).asUtf8String();
return ruleString;
}).collect(Collectors.toList());
任何幫助是極大的贊賞
您將需要使用屬性prefix
來過濾示例中的“文件夾”。 像這樣的東西:
ListObjectsV2Request.builder()
.bucket("your-bucket")
.prefix("ACTIVE/")
.build();
請記住,即使您可以在控制台中創建一個“文件夾”,但在幕后卻不能。 它只是 AWS 存儲的一個 object。 這就是為什么 SDK 中沒有內置選項來創建/列出/任何文件夾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.