我可以上传使用映像文件:如何上传文件到S3并使用boto3公开它?
s3 = session.resource('s3')
bucket = s3.Bucket(S3_BUCKET)
bucket.upload_file(file, key)
不过,我想使文件公开过。我试图寻找一些函数来设置文件的ACL,但似乎像boto3已经改变了他们的API并删除了一些功能。有没有办法在最新版本的boto3中做到这一点?
我可以上传使用映像文件:如何上传文件到S3并使用boto3公开它?
s3 = session.resource('s3')
bucket = s3.Bucket(S3_BUCKET)
bucket.upload_file(file, key)
不过,我想使文件公开过。我试图寻找一些函数来设置文件的ACL,但似乎像boto3已经改变了他们的API并删除了一些功能。有没有办法在最新版本的boto3中做到这一点?
我能够使用objectAcl API来做到这一点:
s3 = boto3.resource('s3')
object_acl = s3.ObjectAcl('bucket_name','object_key')
response = object_acl.put(ACL='public-read')
详情:http://boto3.readthedocs.io/en/latest/reference/services/s3.html#objectacl
Adi's way作品。但是,如果您像我一样,可能会遇到访问被拒绝的问题。这通常是由用户的权限损坏引起的。 我固定它通过将以下的Action
数组:
"s3:GetObjectAcl",
"s3:PutObjectAcl"
要上传和设置权限公开可读在一个步骤中,可以使用:
bucket.upload_file(file, key, ExtraArgs={'ACL':'public-read'})