3 votes

Connexion s3 au dossier via boto

Je vais essayer d'uploader un fichier vers un emplacement spécifique en utilisant boto et python. J'accède à quelque chose à cet effet:

from boto.s3.connection import S3Connection
from boto.s3.key import Key

conn = S3Connection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
bucket = conn.get_bucket('the_bucket_name')
for key in bucket: 
    print key.name

Voici le truc. On m'a fourni des identifiants pour un 'dossier' à l'intérieur d'un bucket. Selon ceci - Amazon S3 boto - how to create a folder? Je comprends qu'il n'y a en réalité pas de dossiers dans s3, mais plutôt des clés comme "foo/bar/my_key.txt". lorsque j'essaie d'exécuter get_bucket(), j'obtiens

boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden

parce que je n'ai pas réellement d'accès au bucket de base, mais plutôt à un sous-ensemble des clés du bucket. my_bucket/the_area_I_have_permission/*

Est-ce que quelqu'un sait comment je pourrais passer l' 'zone' spécifique dans le bucket à laquelle j'ai accès lors de l'étape de connexion? ou une méthode alternative que je pourrais utiliser pour accéder à my_bucket/the_area_I_have_permission/* ?

2voto

Archit Jain Points 764

Cela aide-t-il :

seau = conn.get_bucket('the_bucket_name',validate=False)

clé = seau.get_key("ur_key_name")
if clé is not None:
    print  clé.get_contents_as_string()

clés = seau.list(prefix='the_area_I_have_permission')
for clé in clés:
    print clé.name

1voto

Brad Points 3277

Problème trouvé. Erreur RequestTimeTooSkewed en utilisant la classe PHP S3

Le problème était que la date de ma machine virtuelle était incorrecte et Amazon utilise la date pour valider la demande. 1+ pour @bdonlan.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X