我正在尝试在 s3 存储桶中创建一堆“文件夹”。试图复制与
https://github.com/aws/aws-sdk-go/blob/master/service/s3/s3manager/batch_test.go#L742但是这个东西需要一个“ body ”,这在我的情况下并不是真正需要的。
到目前为止,以下代码可以满足我的需要,但我觉得可以实现更好的“批处理”方法。
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)
}
}
任何指针?
谢谢!
最佳答案
S3 中没有“文件夹”之类的东西。在简单的高层次上,S3 是一个大的键/值存储。列表操作支持查找以某个前缀开头并且可以在已知分隔符处停止的键的子集(例如 /
),使其看起来具有类似文件系统的语义。
只需将对象放入 /a/b/c/d
看起来它已经创建了文件夹 a
, b
& c
但它只是用那个键创建了一个对象。控制台中使用的列表操作在 /
处停止。作为分隔符,因此它提供了类似 View 的文件夹。
您不能将多个 S3 对象放在一个操作中。每个都必须作为单独的操作上传。使用 Go,我建议您可以有一个 channel ,您可以放置所有需要的上传,并让多个并发工作人员处理这些以提高性能。您需要进行一些调整才能找到最佳数量。如果还没有用于此的库,我不会感到惊讶,因为这将是一个非常常见的 S3 用例。
关于Golang AWS S3 批量对象创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58086849/