如何使用 golang 从 Amazon S3 存储桶的子文件夹中获取对象列表?

How to get list of objects from sub folder of Amazon S3 bucket using golang?

提问人:Moss 提问时间:9/22/2016 最后编辑:PangMoss 更新时间:5/2/2017 访问量:18132

问:

如何使用 golang 从 Amazon S3 存储桶的子文件夹中获取对象列表?

我试过了:

svc := s3.New(session.New(), &aws.Config{Region: aws.String("us-east-1")})

params := &s3.ListObjectsInput{
    Bucket: aws.String("bucket"),
}

resp, _ := svc.ListObjects(params)
for _, key := range resp.Contents {
    fmt.Println(*key.Key)
}

我得到了存储桶中所有对象的列表,但我只需要子文件夹中的对象列表。

评论


答:

3赞 OhadBasan 9/28/2016 #1

为了访问文件夹(它们不是真正的文件夹,因为 S3 是对象存储) 您必须向 ListObjectsInput 提供 Prefix 和 Delimiter 属性 假设你有 s3://foo/bar 您可以提供带有“/”分隔符的“foo/bar”前缀以获取所有子对象

27赞 Roshan 5/2/2017 #2

在参数中添加前缀参数

params := &s3.ListObjectsInput {
    Bucket: aws.String("bucket"),
    Prefix: aws.String("root/subfolder"),
}

将列出子文件夹中的对象/