目前为止,以下代码满足了我的需要,但我觉得有更好的“批处理”方法可以实现。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) }}有什么指点吗?
1 回答
Cats萌萌
TA贡献1805条经验 获得超9个赞
S3 中没有“文件夹”这样的东西。从简单的高层来看,S3 是一个大型键/值存储。列表操作支持查找以某个前缀开头并且可以在已知分隔符(例如/
)处停止的键子集,使其看起来像具有类似文件系统的语义。
只需将一个对象放入/a/b/c/d
看起来像是创建了文件夹的对象a
,b
但c
它只是用该键创建了一个对象。控制台中使用的列表操作以 at/
作为分隔符,因此它提供了类似文件夹的视图。
您无法将多个 S3 对象放入单个操作中。每一项都必须作为单独的操作上传。使用 Go,我建议您可以有一个通道,放置所需的所有上传内容,并让多个并发工作人员处理这些内容以提高性能。您需要进行一些调整才能找到最佳数量。如果还没有一个用于此目的的库,我不会感到惊讶,因为这将是一个非常常见的 S3 用例。
- 1 回答
- 0 关注
- 102 浏览
添加回答
举报
0/150
提交
取消