Сделать файл в s3 общедоступным, используя python и boto
У меня есть ссылка ниже, и когда я пытаюсь это понять, появляется XML файл с надписью "Acess denied".
И мне нужно перейти в консоль управления aws и сделать этот файл part-0000
общедоступным, чтобы я мог его использовать.
Знаете ли вы, как я могу предоставить разрешения с помощью boto с помощью python, чтобы я мог использовать эту ссылку, не нужно идти в консоль aws managmet и сделать файл общедоступным?
downloadLink = 'https://s3.amazonaws.com/myFolder/uploadedfiles/2015423/part-00000'
Ответы
Ответ 1
Это должно дать вам идею:
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')
В этом случае public-read
является одной из консервированных политик ACL, поддерживаемых S3, и позволяет любому пользователю читать файл.
Ответ 2
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
Это, похоже, работает с boto 2.42.0 и 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)