我可以上傳使用映像文件:如何上傳文件到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'})