Golang AWS S3 批量对象创建

目前为止,以下代码满足了我的需要,但我觉得有更好的“批处理”方法可以实现。


serv := s3.New(session.New(s3h.Config))


for _, i1 := range []string{"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "a", "b", "c", "d", "e", "f"} {

    for _, i2 := range []string{"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "a", "b", "c", "d", "e", "f"} {

        req := &s3.PutObjectInput{

            Bucket: aws.String(S3_BUCKET),

            Key:    aws.String(i1 + i2 + "/"),

        }

        serv.PutObject(req)

    }

}

有什么指点吗?


一只甜甜圈
浏览 103回答 1
1回答

Cats萌萌

S3 中没有“文件夹”这样的东西。从简单的高层来看,S3 是一个大型键/值存储。列表操作支持查找以某个前缀开头并且可以在已知分隔符(例如/)处停止的键子集,使其看起来像具有类似文件系统的语义。只需将一个对象放入/a/b/c/d看起来像是创建了文件夹的对象a,b但c它只是用该键创建了一个对象。控制台中使用的列表操作以 at/作为分隔符,因此它提供了类似文件夹的视图。您无法将多个 S3 对象放入单个操作中。每一项都必须作为单独的操作上传。使用 Go,我建议您可以有一个通道,放置所需的所有上传内容,并让多个并发工作人员处理这些内容以提高性能。您需要进行一些调整才能找到最佳数量。如果还没有一个用于此目的的库,我不会感到惊讶,因为这将是一个非常常见的 S3 用例。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go