Amazon S3 boto-как создать папку?

Как я могу создать папку под ведро, используя boto библиотека для Amazon s3?

я следовал руководству и создал ключи с разрешением, метаданными и т. д., Но не там, где в документации boto описывается, как создавать папки под ведром или создавать папку под папками в ведре.

9 ответов


в S3 нет понятия папок или каталогов. Вы можете создавать имена файлов, такие как "abc/xys/uvw/123.jpg", которые многие инструменты доступа S3, такие как S3Fox показать как структуру каталогов, но на самом деле это просто один файл, в ведерке.


Предположим, вы хотите создать папку abc / 123/ в своем ведре, это кусок пирога с Boto

k = bucket.new_key('abc/123/')
k.set_contents_from_string('')

или использовать консоль


С 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, и вы увидите папку


добавьте "_$folder$ " к имени папки и вызовите put.

    String extension = "_$folder$";
    s3.putObject("MyBucket", "MyFolder"+ extension, new ByteArrayInputStream(new byte[0]), null);

посмотреть: http://www.snowgiraffe.com/tech/147/creating-folders-programmatically-with-amazon-s3s-api-putting-babies-in-buckets/


S3 не имеет структуры папок, но есть что-то, называемое ключами.

мы можем создать /2013/11/xyz.xls и будет отображаться как папка в консоли. Но часть хранилища S3 будет принимать это как имя файла.

даже при получении мы наблюдаем, что мы можем видеть файлы в определенной папке (или ключи) с помощью ListObjects метод и с помощью


очень легко создавать папки. На самом деле это просто создание ключей.

вы можете увидеть мой код ниже, я создавал папку с utc_time как имя.

помните, заканчивается ключ с '/', как показано ниже, это означает, это ключ:

Key= 'folder1/' + utc_time + '/'

client = boto3.client('s3')
utc_timestamp = time.time()


def lambda_handler(event, context):

    UTC_FORMAT = '%Y%m%d'
    utc_time = datetime.datetime.utcfromtimestamp(utc_timestamp)
    utc_time = utc_time.strftime(UTC_FORMAT)
    print 'start to create folder for => ' + utc_time

    putResponse = client.put_object(Bucket='mybucketName',
                                    Key='folder1/' + utc_time + '/')

    print putResponse

хотя вы можете создать папку, добавив " / "к имени папки. Под капотом S3 поддерживает плоскую структуру в отличие от вашего обычного NFS.

var params = {
            Bucket : bucketName,
            Key : folderName + "/"
        };
s3.putObject(params, function (err, data) {});

используйте этот:

import boto3
s3 = boto3.client('s3')
bucket_name = "YOUR-BUCKET-NAME"
directory_name = "DIRECTORY/THAT/YOU/WANT/TO/CREATE" #it's name of your folders
s3.put_object(Bucket=bucket_name, Key=(directory_name+'/'))

по-видимому, теперь вы можете создавать папки в S3. Я не уверен, с каких пор, но у меня есть ведро в "стандартной" зоне и я могу выбрать Создать папку из раскрывающегося списка действий.