Подтвердить что ты не робот

Добавить папку в ведро Amazon s3

Я хочу добавить папку в мой ковш amazon s3 с помощью кодирования. Можете ли вы предложить мне, как достичь этого?

4b9b3361

Ответ 1

В Amazon S3 нет папок. Это просто, что большинство доступных инструментов браузера S3 показывают часть имени ключа, разделенного косой чертой в качестве папки.

Если вам действительно нужно, вы можете создать пустой объект с косой чертой в конце. например "folder/" Это будет выглядеть как папка, если вы откроете ее с помощью инструмента GUI и AWS Console.

Ответ 2

Java с AWS SDK:

  • В s3 нет папок, только пары ключ/значение. Ключ может содержать косые черты (/), и это будет отображаться как папка в консоли управления, но программно это не папка, это значение строки.

  • Если вы пытаетесь структурировать свой ведро s3, то ваши соглашения об именах (ключи, которые вы даете своим файлам) могут просто следовать обычным шаблонам каталогов, т.е. folder/subfolder/file.txt.

    При поиске (в зависимости от языка, который вы используете), вы можете искать через префикс разделитель. В Java это будет вызов метода listObjects(String storageBucket, String prefix, String delimiter).

    storageBucket - это имя вашего ведра, prefix - это ключ, который вы хотите найти, а delimiter используется для фильтрации вашего поиска на основе prefix.

Ответ 3

Как вам все говорили, в AWS S3 нет никаких "папок", вы думаете о них некорректно. AWS S3 имеет "объекты", эти объекты могут выглядеть как папки, но они не являются папками в полном смысле этого слова. Если вы ищете создание папок на Amazon AWS S3, вы не найдете много хороших результатов.

Существует способ создания "папок" в том смысле, что вы можете создать имитированную структуру папок на S3, но опять же, оберните голову тем фактом, что вы создаете объекты в S3, а не в папках. И вместе с этим вам понадобится команда "put-object" для создания этой моделируемой структуры папок. Теперь, чтобы использовать эту команду, вам нужны установленные инструменты AWS CLI, перейдите сюда Установка AWS CLI для получения инструкций по их установке.

Команда такова:

aws s3api put-object --bucket your-bucket-name --key path/to/file/yourfile.txt --body yourfile.txt

Теперь интересная часть этой команды: вам не нужно иметь все "папки" (объекты), созданные до запуска этой команды. Это означает, что вы можете иметь "папку" (объект), чтобы содержать вещи, но затем вы можете использовать эту команду для создания имитируемой структуры папок внутри этой "папки" (объекта), как я уже говорил ранее. Например, у меня есть "папка" (объект) с именем "импортер" в моей корзине S3, скажем, я хочу вставить sample.txt в структуру "папки" (объекта) года, месяца, а затем образец "папку" (объект) в пределах всего этого.

Если у меня есть только объект "импортер" в моем ковше, мне не нужно заходить заранее, чтобы создать год, месяц и образцы объектов ( "папки" ) перед запуском этой команды. Я могу запустить эту команду следующим образом:

aws s3api put-object --bucket my-bucket-here --key importer/2016/01/sample/sample.txt --body sample.txt

Затем команда put-object войдет и создаст путь, который я указал в флагом -key. Здесь немного драгоценности: даже если у вас нет файла для загрузки на S3, вы все равно можете создавать объекты ( "папки" ) в ведре S3, например, я создал оболочку script для создания папок "внутри ведра, оставив флаг -body и не указывая имя файла и оставив косую черту в конце пути, указанном в флагом -key, система создает желаемую имитированную структуру папок в пределах S3 без вставки файла в процесс.

Надеюсь, это поможет вам понять систему немного лучше.

Примечание: после создания структуры "папки" вы можете использовать команду S3 "sync" для синхронизации хронологической папки "папка" с папкой на вашей локальной машине или даже с другим ведром S3.

Ответ 4

AWS: S3 rails gem делает это сам по себе:

AWS::S3::S3Object.store("teaser/images/troll.png", file, AWS_BUCKET)

Будет автоматически создавать папки teaser и images ", если они еще не существуют.

Ответ 5

В iOS (Objective-C) я сделал следующий путь

Вы можете добавить ниже код, чтобы создать папку внутри amazon s3 bucket программно. Это рабочий фрагмент кода. Любое предложение Добро пожаловать.

-(void)createFolder{
    AWSS3PutObjectRequest *awsS3PutObjectRequest = [AWSS3PutObjectRequest new];
    awsS3PutObjectRequest.key = [NSString stringWithFormat:@"%@/", @"FolderName"];
    awsS3PutObjectRequest.bucket = @"Bucket_Name";
    AWSS3 *awsS3 = [AWSS3 defaultS3];
    [awsS3 putObject:awsS3PutObjectRequest completionHandler:^(AWSS3PutObjectOutput * _Nullable response, NSError * _Nullable error) {
        if (error) {
            NSLog(@"error Creating folder");
        }else{
            NSLog(@"Folder Creating Sucessful");
        }
    }];
}

Ответ 6

С aws cli можно скопировать всю папку в ведро.

aws s3 cp /path/to/folder s3://bucket/path/to/folder --recursive

Существует также возможность синхронизировать папку с помощью aws s3 sync

Ответ 7

С AWS SDK.Net отлично работает, просто добавьте "/" в конец папки имен:

var folderKey =  folderName + "/"; //end the folder name with "/"
AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(AWSAccessKey, AWSSecretKey);
var request = new PutObjectRequest();
request.WithBucketName(AWSBucket);
request.WithKey(folderKey);
request.WithContentBody(string.Empty);
S3Response response = client.PutObject(request);

Затем обновите консоль AWS, и вы увидите папку

Ответ 8

Для Swift я создал метод, в котором вы передаете String для имени папки.

Swift 3:

import AWSS3

func createFolderWith(Name: String!) {
    let folderRequest: AWSS3PutObjectRequest = AWSS3PutObjectRequest()
    folderRequest.key = Name + "/"
    folderRequest.bucket = bucket
    AWSS3.default().putObject(folderRequest).continue({ (task) -> Any? in
        if task.error != nil {
            assertionFailure("* * * error: \(task.error?.localizedDescription)")
        } else {
            print("created \(Name) folder")
        }
        return nil
    })
}

Затем просто позвоните

 createFolderWith(Name:"newFolder")

Ответ 9

Вот как вы можете достичь того, что вы ищете (из кода /cli):

--create/select the file (locally) which you want to move to the folder:

~/Desktop> touch file_to_move

--move the file to s3 folder by executing:

~/Desktop> aws s3 cp file_to_move s3://<path_to_your_bucket>/<new_folder_name>/

В вашей корзине s3 будет создана новая папка, и теперь вы сможете выполнять операторы cp, mv, rm..., то есть управлять папкой как обычно.

Если этот новый файл, созданный выше, не требуется, просто удалите его. Теперь у вас есть ведро s3.

Ответ 10

Вы можете выбрать язык по вашему выбору из AWS SDK

В качестве альтернативы вы можете попробовать мини-клиентские библиотеки, доступные в Python, Go, . Net, Java, Javascript для вашей среды разработки приложений, в ней есть каталог примеров со всеми перечисленными основными операциями.

Отказ от ответственности: я работаю для Minio

Ответ 11

В быстрой версии 2.2 вы можете создать папку, используя

func createFolderWith(Name: String!) {
    let folderRequest: AWSS3PutObjectRequest = AWSS3PutObjectRequest()
    folderRequest.key = Name + "/"
    folderRequest.bucket = "Your Bucket Name"
    AWSS3.defaultS3().putObject(folderRequest).continueWithBlock({ (task) -> AnyObject? in
        if task.error != nil {
            assertionFailure("* * * error: \(task.error?.localizedDescription)")
        } else {
            print("created \(Name) folder")
        }
        return nil
    })
}

Ответ 12

Ниже создается пустой каталог с именем mydir1.

Ниже приведен код nodejs, он должен быть похож на другие языки.

Трюк состоит в том, чтобы иметь косую черту (/) в конце имени объекта, как в "mydir1/", иначе будет создан файл с именем "mydir1".

let AWS = require('aws-sdk');
AWS.config.loadFromPath(__dirname + '\\my-aws-config.json');
let s3 = new AWS.S3();

var params = {
    Bucket: "mybucket1",
    Key: "mydir1/",
    ServerSideEncryption: "AES256" };

s3.putObject(params, function (err, data) {
    if (err) {
        console.log(err, err.stack); // an error occurred
        return;
    } else {
        console.log(data);           // successful response
        return;
        /*
         data = {
         ETag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
         ServerSideEncryption: "AES256",
         VersionId: "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt"
         }
         */
    } });

Источник: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property

Ответ 13

для того, чтобы создать каталог внутри корзины s3 и скопировать содержимое внутри, это довольно просто.

Можно использовать команду S3: aws s3 cp abc/def.txt s3://mybucket/abc/

Примечание: /is должен создать каталог, иначе он станет файлом в s3.

Ответ 14

Это спорная тема, поэтому на снимке экрана консоли AWS S3 в 2019 году добавлены папки и примечание:

Когда вы создаете папку, консоль S3 создает объект с указанным выше именем, к которому добавляется суффикс "/", и этот объект отображается как папка в консоли S3.

Adding folders to S3