Amazon S3 boto - comment créer un dossier?

comment créer un dossier sous un seau en utilisant la bibliothèque boto pour Amazon s3?

j'ai suivi le manuel, et j'ai créé les clés avec la permission, les métadonnées, etc., mais non où dans la documentation du boto il est décrit comment créer des dossiers sous un seau, ou créer un dossier sous des dossiers dans un seau.

95
demandé sur Eric Leschinski 2009-12-21 15:04:47

9 réponses

il n'y a pas de concept de dossiers ou de répertoires dans S3. Vous pouvez créer des noms de fichiers comme "abc/xys/uvw/123.jpg" , que de nombreux outils d'accès S3 comme S3Fox montrent comme une structure de répertoire, mais c'est en fait juste un seul fichier dans un seau.

105
répondu user240469 2017-02-20 10:33:48

supposons que vous voulez créer le dossier abc / 123 / dans votre seau, c'est du gâteau avec Boto

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

ou utiliser la console

"
35
répondu TomNg 2015-02-24 02:33:41

avec AWS SDK .Net fonctionne parfaitement, il suffit d'ajouter " / "à la fin de la chaîne de noms de dossiers:

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);

puis rafraîchissez votre console AWS, et vous verrez le dossier

17
répondu elranu 2013-08-16 16:56:58

ajoute "_ $ dossier$ " à votre nom de dossier et appel mis.

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

voir: http://www.snowgiraffe.com/tech/147/creating-folders-programmatically-with-amazon-s3s-api-putting-babies-in-buckets /

8
répondu Mamad Asgari 2011-05-24 12:27:24

S3 n'a pas de structure de dossier, mais il y a quelque chose appelé clés.

nous pouvons créer /2013/11/xyz.xls et sera affiché comme dossier dans la console. Mais la partie de stockage de S3 prendra comme nom de fichier.

même lors de la récupération nous observons que nous pouvons voir des fichiers dans un dossier particulier (ou des clés) en utilisant la méthode ListObjects et en utilisant le paramètre Prefix .

1
répondu Balaram 2013-11-15 23:31:26

c'est vraiment facile de créer des dossiers. En fait, c'est juste de la création de clés.

vous pouvez voir mon code ci-dessous je créais un dossier avec utc_time comme nom.

do remember termine la clé avec ' / ' comme ci-dessous, cela indique que c'est une clé:

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
1
répondu Gabriel Wu 2017-02-07 07:13:59

même si vous pouvez créer un dossier en ajoutant " / " à votre nom de fichier. Sous le capot, S3 maintient une structure plate contrairement à votre NFS régulier.

var params = {
            Bucket : bucketName,
            Key : folderName + "/"
        };
s3.putObject(params, function (err, data) {});
1
répondu vpage 2017-08-20 16:39:07

utilisez ceci:

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+'/'))
1
répondu Reza Amya 2017-12-14 20:17:23

apparemment, vous pouvez maintenant créer des dossiers dans S3. Je ne suis pas sûr Depuis quand, mais j'ai un seau dans la zone "Standard" et je peux choisir Créer un dossier à partir de l'action dropdown.

0
répondu Perelx 2015-10-21 09:44:04