J'ai le lien ci-dessous, et lorsque j'essaie d'y accéder, il apparaît un fichier xml disant "Accès refusé".
Et je dois accéder à la console de gestion aws et rendre ce fichier part-0000
public afin de pouvoir y accéder.
Savez-vous comment puis-je donner des autorisations en utilisant boto avec python pour pouvoir accéder à ce lien sans avoir à aller à la console aws managmet et à rendre le fichier public?
downloadLink = 'https://s3.amazonaws.com/myFolder/uploadedfiles/2015423/part-00000'
Cela devrait vous donner une idée:
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')
Dans ce cas, public-read
est l’une des stratégies ACL prédéfinies prises en charge par S3 et permet à quiconque de lire le fichier.
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="%s/%s" % (folder_name, filename))
Cela semble fonctionner avec boto 2.42.0 et 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)
Boto3 paramètre ACL. Bonne question/réponses ici.
bucket.Acl().put(ACL='public-read')
obj.Acl().put(ACL='public-read')
L'utilisation de obj.Acl().put...
est très utile pour déplacer ou manipuler des éléments. Particulièrement utile en cas de script/de procédure.
via https://boto3.readthedocs.io/fr/latest/guide/migrations3.html#access-controls .