amazon web services - pricing - Haz un archivo en s3 público usando python y boto
precios de amazon aws (4)
Ajuste de Boto3 ACL. Buenas preguntas / respuestas aquí.
bucket.Acl().put(ACL=''public-read'')
obj.Acl().put(ACL=''public-read'')
El uso de obj.Acl().put...
es muy útil al mover o manipular elementos. Especialmente útil si el scripting / procesal.
a través de https://boto3.readthedocs.io/en/latest/guide/migrations3.html#access-controls .
Tengo un pequeño enlace a continuación, y cuando intento acceder aparece un archivo xml que dice "Acceso denegado".
Y tengo que ir a la consola de administración de aws y hacer público este archivo part-0000
para poder acceder a él.
¿Sabes cómo puedo otorgar permisos utilizando boto con python para poder acceder a este enlace sin necesidad de ir a la consola de administración de aws y hacer público el archivo?
downloadLink = ''https://s3.amazonaws.com/myFolder/uploadedfiles/2015423/part-00000''
Esto debería darte una 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'')
En este caso, public-read
es una de las políticas de ACL enlatadas admitidas por S3 y permitiría a cualquiera leer el archivo.
Esto parece funcionar con boto 2.42.0 y 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)
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))