2017-11-09 1 views
0

Ich versuche, einen Bucket-Unterordner mit Pythons Boto3 zuzugreifen.Zugriff auf einen Amazon S3-Bucket-Unterordner mit Python

Das Problem ist, dass ich nirgendwo finden kann, wie man die Unterordner Informationen in den Boto-Code eingeben.

Alles, was ich finde, ist, wie man den Bucket-Namen setzt, aber ich habe keinen Zugriff auf den gesamten Bucket, nur auf einen bestimmten Unterordner. Kann mir jemand ein Licht geben?

Was ich getan habe bisher:

BUCKET = "folder/subfolder" 
conn = S3Connection(AWS_KEY, AWS_SECRET) 
bucket = conn.get_bucket(BUCKET) 
for key in bucket.list(): 
    print key.name.encode('utf-8') 

die Fehlermeldungen:

botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied 

Ich brauche nicht Boto für den Betrieb zu verwenden, ich muss nur Liste/erhalten die Dateien innerhalb dieses Unterordner.

P.S .: Ich kann auf die Dateien zugreifen mit cyberduck, indem Sie den Pfad folder/subfolder, was bedeutet, ich habe Zugriff auf das Datum.

Mit freundlichen Grüßen,

Israel

+0

Ihr Code scheint für Boto 2.x statt Boto 3 zu sein. –

+0

Können Sie mir zeigen, wo ich die Informationen finde, um mit boto 3 auf den Unterordner zuzugreifen? Ich habe es im Handbuch nicht gefunden. :( –

+0

Ich bin etwas verwirrt über dein Problem. Was meinst du mit * "Putting" * in * "mit cyberduck durch Setzen des Pfades' Ordner/Unterordner' "*? Wo? –

Antwort

0

Ich reparierte das Problem etwas ähnliches vtl mit vorgeschlagen:

ich das Präfix in meinem Eimer und ein Trennzeichen zu setzen hatte. Der endgültige Code war so etwas wie folgt aus:

objects = s3.list_objects(Bucket=bucketName, Prefix=bucketPath+'/', Delimiter='/') 

Wie er sagte, ist es nicht Struktur Ordner, dann müssen Sie ein Trennzeichen angeben, und es auch nach dem Präfix setzen wie ich es tat.

Danke für die Antwort.

0

Versuchen:

for obj in bucket.objects.filter(Prefix="your_subfolder"): 
    do_something() 

AWS tatsächlich keine Verzeichnisstruktur - es täuscht nur ein durch "/" s in Namen setzen. Die Option Prefix schränkt die Suche auf alle Objekte ein, deren Name mit dem angegebenen Präfix beginnt. Dies sollte Ihr "Unterordner" sein.

+0

boto.exception. S3ResponseError: S3ResponseError: 403 Verboten –

+0

Ich habe diese Nachricht jetzt erhalten –

Verwandte Themen