2015-04-02 11 views
13

Ho il seguente link qui sotto, e quando provo ad accedirlo appare un file xml che dice "Acess negato".Creare un file in s3 public usando python e boto

E ho bisogno di andare alla console di gestione aws e rendere pubblico questo file part-0000 così posso accedervi.

Sai come posso dare i permessi usando boto con python in modo da poter accedere a questo link senza dover accedere alla console di awag managmet e rendere pubblico il file?

downloadLink = 'https://s3.amazonaws.com/myFolder/uploadedfiles/2015423/part-00000' 

risposta

23

Questo dovrebbe dare un'idea:

import boto.s3 
conn = boto.s3.connect_to_region('us-east-1') # or region of choice 
bucket = conn.get_bucket('myFolder') 
key = bucket.lookup('uploadedfiles/2015423/part-00000') 
key.set_acl('public-read') 

In questo caso, public-read è una delle politiche ACL in scatola supportati da S3 e permetterebbe a chiunque di leggere il file.

+0

Non funziona per me. Dice "nessuna funzione denominata ricerca". Usando boto3 – Adi

+4

A destra, quello snippet di codice è per boto. Non boto3. – garnaat

7
from boto3.s3.transfer import S3Transfer 
    import boto3 
    . 
    . 
    .#have all the variables populated which are required below 
    . 

    client = boto3.client('s3', aws_access_key_id=access_key, 
               aws_secret_access_key=secret_key) 
      transfer = S3Transfer(client) 
      transfer.upload_file(filepath, bucket_name, folder_name+"/"+filename) 
    response = client.put_object_acl(ACL='public-read', Bucket=bucket_name, Key=folder_name+"/"+filename) 
3

Questo sembra funzionare con boto 2.42.0 e Python 3

s3 = boto.connect_s3() 
b = s3.get_bucket('brianray') 
k = Key(b) 
k.key = new_file_name 
k.set_contents_from_filename(new_file_name) 
k.set_acl('public-read') 
k.generate_url(expires_in=0, query_auth=False) 
Problemi correlati