2017-01-27 11 views
6

मैं का उपयोग कर एक छवि फ़ाइल अपलोड करने में सक्षम हूँ:एस 3 पर फ़ाइल कैसे अपलोड करें और इसे boto3 का उपयोग करके सार्वजनिक बनाएं?

s3 = session.resource('s3') 
bucket = s3.Bucket(S3_BUCKET) 
bucket.upload_file(file, key) 

हालांकि, मैं फ़ाइल सार्वजनिक भी बनाना चाहते हैं। मैंने फ़ाइल के लिए एसीएल सेट करने के लिए कुछ फ़ंक्शंस देखने की कोशिश की लेकिन ऐसा लगता है कि boto3 ने अपनी एपीआई बदल दी है और कुछ फ़ंक्शन हटा दिए हैं। क्या boto3 की नवीनतम रिलीज में ऐसा करने का कोई तरीका है?

उत्तर

1

Adi's way काम करता है। हालांकि, अगर आप मेरे जैसे थे, तो हो सकता है कि आपने किसी एक्सेस से इनकार कर दिया हो। यह आम तौर पर उपयोगकर्ता की टूटी अनुमतियों के कारण होता है। मैं Action सरणी के लिए निम्न जोड़कर तय:

"s3:GetObjectAcl", 
"s3:PutObjectAcl" 
4

अपलोड करने के लिए एक ही चरण में अनुमति के लिए सार्वजनिक रूप से पठनीय निर्धारित करते हैं, आप का उपयोग कर सकते हैं:

bucket.upload_file(file, key, ExtraArgs={'ACL':'public-read'})

संबंधित मुद्दे