जो मैं समझता हूं, मैनेजमेंट कंसोल में 'सार्वजनिक बनाएं' विकल्प दोबारा निर्देशिका में प्रत्येक ऑब्जेक्ट के लिए सार्वजनिक अनुदान जोड़ता है। आप इसे एक फ़ाइल पर राइट-क्लिक करके देख सकते हैं, फिर 'Properties' पर क्लिक करें।
Grantee: Everyone [x] open/download [] view permissions [] edit permission.
यह इस सार्वजनिक उपयोग सेट नहीं होगी आप इस निर्देशिका के भीतर एक नई फ़ाइल अपलोड करते हैं और इसलिए निजी हो: तब आप पर 'अनुमतियां' क्लिक करने के लिए और एक पंक्ति होना चाहिए की जरूरत है।
आपको सार्वजनिक पढ़ने की अनुमति को एक-एक करके मैन्युअल रूप से हटाने की आवश्यकता है, या तो मैन्युअल रूप से यदि आपके पास केवल कुछ कुंजियां हैं या स्क्रिप्ट का उपयोग करके।
मैं 'Boto' मॉड्यूल के साथ अजगर में एक छोटे से पटकथा लिखी रिकर्सिवली एक S3 फ़ोल्डर में 'सार्वजनिक पढ़ा' सभी चाबियों का गुण दूर करने के लिए: (केवल
#!/usr/bin/env python
#remove public read right for all keys within a directory
#usage: remove_public.py bucketName folderName
import sys
import boto
bucketname = sys.argv[1]
dirname = sys.argv[2]
s3 = boto.connect_s3()
bucket = s3.get_bucket(bucketname)
keys = bucket.list(dirname)
for k in keys:
new_grants = []
acl = k.get_acl()
for g in acl.acl.grants:
if g.uri != "http://acs.amazonaws.com/groups/global/AllUsers":
new_grants.append(g)
acl.acl.grants = new_grants
k.set_acl(acl)
मैं के साथ एक फ़ोल्डर में परीक्षण किया) 2 वस्तुओं और यह काम किया। आप चाबियों का बहुत है, तो यह पूरा करने के लिए कुछ समय लग सकता है और एक समानांतर दृष्टिकोण आवश्यक हो सकता है। भी एक दिया S3 पथ पर पुनरावर्ती एसीएल सेट करने के लिए लगता है -
आप witin ऐसा कर सकते हैं मैनेजमेंट कंसोल या प्रोग्रामैटिक एपीआई – ascobol
जो मैंने सोचा था, लेकिन मुझे कंसोल के भीतर विकल्प नहीं दिख रहा है। ऐसा लगता है कि कुछ ऐसा करने के लिए एपीआई का उपयोग करना हास्यास्पद लगता है। – GoodGets
वास्तव में, कंसोल केवल आपको एक फ़ाइल द्वारा अनुदान एक फ़ाइल को हटाने देता है। पाइथन में इसे कैसे करें इसके बारे में मेरा विस्तृत उत्तर देखें। – ascobol