0
votes

Répertorier les premiers répertoires de profondeur par client Amazon S3

J'ai téléchargé des dossiers dans mon compartiment s3, par exemple:

            ObjectListing objects = conn.listObjects(bucket.getName());
            do {
                for (S3ObjectSummary objectSummary : objects.getObjectSummaries()) {

                    System.out.println(objectSummary.getKey());
                }
                objects = conn.listNextBatchOfObjects(objects);
            } while (objects.isTruncated());

ces répertoires (myfirstdir, myseconddir, mythrids) incluent également des sous-répertoires et aussi des fichiers simples

Comment puis-je lister ces répertoires par client Amazon S3, mais pas par sous-répertoires. Ce que je veux c'est juste le retour de s3cmd ls s3: // my-bucket / , il ne fait que lister les premiers fichiers ou répertoires de profondeur, mais pas de manière récursive

myfirstdir
myseconddir
mythirddir

J'ai essayé le code suivant , mais il a renvoyé chacun des fichiers et répertoires de manière récursive

s3cmd  sync myfirstdir  s3://my-bucket/myfirstdir/
s3cmd  sync myseconddir  s3://my-bucket/myseconddir/
s3cmd  sync mythirddir  s3://my-bucket/mythirddir/


1 commentaires

Remarque: ces jours-ci, il est recommandé d'utiliser l ' AWS Command-Line Interface (CLI) plutôt que s3cmd . Il semblerait que s3cmd n'ait pas eu de version pour 1.5 années.


3 Réponses :


0
votes

S3 n'a pas de dossiers comme "objets physiques". Il y a un seau et vous y mettez des fichiers.

Chaque fichier a un chemin associé.

Il est maintenant vrai que si le chemin comporte une barre oblique ("/") dans son nom, il sera affiché dans les outils de l'interface utilisateur sous forme de dossier, mais cela ne fonctionne pas comme un système de fichiers "habituel".

Dans la documentation officielle, vous pouvez trouver un aperçu de son fonctionnement.


0 commentaires

0
votes
ListObjectsV2Result result = conn.listObjectsV2(new ListObjectsV2Request().withBucketName(bucket.getName()).withDelimiter("/"));
for (String prefix : result.getCommonPrefixes()) {
    System.out.println(prefix);
}
I translate part of the code of this page: https://github.com/koblas/s3-cli/blob/master/cmd_ls.go to Java, so it can show only first level dirs under the bucket

0 commentaires

0
votes

Équivalent Python:

import boto3

s3_client = boto3.client('s3')

response = s3_client.list_objects_v2(Bucket='my-bucket', Delimiter='/')

for prefix in response['CommonPrefixes']:
    print(prefix['Prefix'])


0 commentaires