首页 > 解决方案 > 如何从桶中只获取一个对象?

问题描述

我一次只需要从 S3 存储桶中获取一个对象。我只找到了获取存储桶中所有对象的 API。有没有办法只获取一个?我将使用某个位置或索引一次获取一个对象。

    result, err := w.Client.ListObjectsV2(ctx, input)
    if err != nil {
        fmt.Println("Got an error retrieving objects:")
        fmt.Println(err)
    }
    for _, item := range result.Contents {
        fmt.Println("Name:          ", *item.Key)
        fmt.Println("Last modified: ", *item.LastModified)
        fmt.Println("Size:          ", item.Size)
        fmt.Println("Storage class: ", item.StorageClass)
        fmt.Println("")
    }

标签: amazon-web-servicesgoamazon-s3aws-sdk-go

解决方案


您可以通过在ListObjectsV2Input中指示 MaxKeys=1 来请求返回最大数量的 S3 密钥:

MaxKeys:设置响应中返回的最大键数。默认情况下,该操作最多返回 1,000 个键名。响应可能包含更少的键,但永远不会包含更多。

要获取下一个 S3 密钥,您可以在后续的 ListObjectsV2 请求中使用StartAfter或使用。ContinuationToken


推荐阅读