Arhn - архитектура программирования

Получите 2 объекта S3 и их содержимое, используя всего 1 запрос [C # AWSSDK]

У меня есть следующее ведро файла S3:

BucketName

  • folder1
    • usa
      • file1.zip
      • file2.zip
    • canada
      • file1.zip
      • file2.zip

Есть ли способ получить содержимое (т.е. перечислить ключи) из пути BucketName / folder1 /, который даст мне файлы объектов **usa** и **canada** в 1 запросе к S3.

В настоящее время у меня есть следующий код, который делает 2 запроса к S3, которых я пытаюсь избежать, чтобы получить все файлы для каждой из двух стран:

public List<string> GetShapefiles(string country)
{

    var s3Request = new ListObjectsV2Request
    {
        BucketName = BucketName,
        Delimiter = "/"
    };

    if (country == "US")
    {
        s3Request.Prefix = "BucketName/folder1/usa/";

        return GetShapeFileList(s3Request);
    }

    else if (country == "Canada")
    {
        s3Request.Prefix = "BucketName/folder1/canada/";

        return GetShapeFileList(s3Request);
    }

}

    private List<string> GetShapeFileList(ListObjectsV2Request request)
{
    var result = new List<string>();
    ListObjectsV2Response response;

        do
        {
            response = S3_CLIENT.ListObjectsV2Async(request).Result;

            foreach (var file in response.S3Objects.Where(f => f.Key.LastIndexOf('/') != f.Key.Length - 1))
            {
                result.Add(file.Key);
            }

            request.ContinuationToken = response.NextContinuationToken;
        } while (response.IsTruncated);

        return result;
}

Поэтому в идеале я хотел бы сделать только один запрос, который предоставит мне все zip-файлы для США и Канады, например:

/usa/file1.zip
/usa/file2.zip
/canada/file1.zip
/canada/file2.zip

Ответы:


1

Amazon S3 не поддерживает получение нескольких диапазонов данных для одного запроса GET.

- https://docs.aws.amazon.com/AmazonS3/latest/dev/GettingObjectsUsingAPIs.html

Лучше всего продолжать то, что вы делаете, - перебирать ваши объекты и извлекать каждый из них. Это можно сделать одновременно или асинхронно - я бы рекомендовал получать каждый объект из S3 параллельно. Удачи!

06.08.2020
  • Спасибо за ваш комментарий. Полезно знать, что это не поддерживается. 07.08.2020
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..