2017-01-14 1 views
0

J'utilise la bibliothèque Boto3 pour récupérer le lien de téléchargement d'un fichier dans S3. Même après avoir ajouté le acl pour le fichier à public-read, j'obtiens une réponse «accès refusé» lorsque je tape l'URL du fichier renvoyé par la réponse generate_presigned_post.Boto S3: rendre le fichier public

Mon code Boto:

client = boto3.client('s3') 
response = client.generate_presigned_post(
    Bucket='bucketname', 
    Key='filename.csv', 
    Fields={ 
     'acl': 'public-read' 
    }, 
    ExpiresIn=3600) 

Comment puis-je faire de ce fichier s3 accessible en téléchargement?

Répondre

2

Lorsque vous générez un poste prédéfini, vous créez un URL unique qui peut être utilisé pour POST (télécharger) un fichier dans un compartiment s3. Si vous souhaitez récupérer un fichier, vous devez effectuer une demande GET

Si le seau est « lecture publique », vous n'avez pas besoin de générer une demande presigned.

Je ne l'ai pas encore testé, mais je suppose que cela ferait l'affaire pour télécharger le fichier:

key = bucket.get_key('filename.csv') 
key.get_contents_to_filename('local_filename.csv') 

Si vous voulez créer un lien de téléchargement pour quelqu'un d'autre à utiliser, générer un présignéGETdemande.

+0

Merci pour votre aide! – Paul