簡體   English   中英

Java AWS SDK v2:列出存儲桶密鑰,但僅列出文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM