Golang AWS S3 создание пакетного объекта - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь создать кучу "папок" внутри корзины s3.Пытался продублировать тот же подход, что и https://github.com/aws/aws-sdk-go/blob/master/service/s3/s3manager/batch_test.go#L742, но эта вещь ожидает "Тело", которое на самом деле не нужно в моем случае.Пока что следующий код делает то, что мне нужно, но я чувствую, что есть лучший «пакетный» подход, который можно реализовать.

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 Ответ

0 голосов
/ 25 сентября 2019

В S3 нет такой вещи, как "папки".На простом высоком уровне S3 - это большое хранилище ключей / значений.Операция list поддерживает поиск подмножеств ключей, которые начинаются с определенного префикса и могут останавливаться на известном разделителе (например, /), позволяя ему выглядеть так, как будто он имеет файловую систему, подобную семантике.

Простое помещение объекта в /a/b/c/d, который выглядит так, как будто он создал папки a, b & c, но он просто создал один объект с этим ключом.Операция списка, используемая в консоли, останавливается на / в качестве разделителя, поэтому она предлагает папку, подобную представлению.

Вы не можете поместить несколько объектов S3 в одну операцию.Каждый из них должен быть загружен как отдельная операция.Используя Go, я бы порекомендовал вам иметь канал, в который вы помещаете все необходимые загрузки, и иметь несколько параллельных рабочих, обрабатывающих их для повышения производительности.Вам нужно сделать некоторые настройки, чтобы найти оптимальное количество.Я не удивлюсь, если для этого еще нет библиотеки, поскольку это довольно распространенный вариант использования S3.

...