2012-08-11 29 views
14

मैं समझने की कोशिश कर रहा हूं कि एक बाल्टी को सामान्य रूप से कैसे सेट किया जाए, लेकिन प्रतिबंधों के साथ अनाम अपलोड को अनुमति देता है। विशिष्ट मानदंड हैं:एस 3 - बेनामी अपलोड - कुंजी उपसर्ग

  • बाल्टी अधिकतर निजी है और फ़ाइलों को जोड़ने/निकालने/अपडेट/सूची करने के लिए मेरी कुंजी/गुप्त की आवश्यकता है।
  • "आने वाली" नामक एक "निर्देशिका" (यानी कुंजी उपसर्ग) है जो अज्ञात उपयोगकर्ताओं को सामग्री अपलोड करने की अनुमति देगी लेकिन सूची नहीं देगी।
  • बाल्टी की सभी सामग्री पर एक दिन की समाप्ति है। बोनस के रूप में मैं "आने वाली" निर्देशिका को 30 मिनट की समाप्ति के लिए चाहूंगा, हालांकि यदि यह संभव नहीं है तो पूरे बाल्टी के लिए एक दिन की समाप्ति होगी।
  • "आने वाले" उपसर्ग वाले फ़ाइलें प्रति ऑब्जेक्ट आकार में सीमित होंगी।
  • मैं ऑब्जेक्ट को "आने वाले" उपसर्ग के साथ केवल कुछ सामग्री प्रकारों तक सीमित करना चाहता हूं।

सवाल मेरे पास है कर रहे हैं:

  1. यह बस दो बाल्टी बनाने के लिए बेहतर होगा। मेरी आने वाली फाइलों में से एक और मेरी व्यक्तिगत प्रसंस्करण और भंडारण के लिए एक?
  2. आने वाली निर्देशिका में फ़ाइल को अपलोड करने के लिए कोड कैसा दिखाई देगा। आदर्श रूप में मैं एस 3 लाइब्रेरी पर निर्भरता से बचना चाहता हूं और केवल HTTP कॉल का उपयोग करना चाहता हूं। बोनस अंक यदि आप मुझे रूबी में इस पर सही दिशा दिखा सकते हैं। :)

समाप्ति S3 प्रबंधन कंसोल के माध्यम से settable लगता है, लेकिन केवल छोटी से छोटी समाप्ति के रूप में 1 दिन तक सीमित है। क्या मैं उस क्षेत्र में दशमलव डाल सकता हूं? अनुमति केवल एक उपसर्ग की बजाय एक संपूर्ण बाल्टी पर लागू होती प्रतीत होती है। यह मुझे सोच रहा है कि मुझे सिर्फ दो बाल्टी चाहिए। अगर मैं एक बाल्टी रखता हूं तो मुझे लगता है कि मुझे आईएएम नीति बनाने और बाल्टी पर लागू करने की जरूरत है, लेकिन यह एस 3 के मेरे सीमित ज्ञान से परे है और मैं यह सुनिश्चित करना चाहता हूं कि मैं उन अनुमतियों में छेद नहीं छोड़ूं जो लोगों को करने की अनुमति देते हैं मैं उससे ज्यादा चाहता हूं।

मुझे HTTP फॉर्म पोस्ट के माध्यम से S3 पर अज्ञात अपलोड करने पर बहुत सारे दस्तावेज़ मिल गए हैं। मैं इसे कोड में अनुकूलित कर सकता हूं लेकिन मुझे आश्चर्य है क्योंकि मैं एप्लिकेशन कोड में हूं (और एक HTTP फॉर्म पोस्ट नहीं) क्या कोई आसान तरीका है?

+0

2 के लिए, क्या आपने कैरियरवेव के पेपरक्लिप के साथ एस 3 को कॉन्फ़िगर करने पर विचार किया है? – rb512

+0

सुझाव के लिए धन्यवाद। हां, मैंने पहले उन लोगों का उपयोग किया है हालांकि मुझे लगता है कि वे आम तौर पर प्रमाणित आधार पर काम करते हैं (अज्ञात नहीं)। अज्ञात करने के लिए कुछ ऐड-ऑन हो सकते हैं लेकिन मैं वास्तव में उम्मीद कर रहा हूं क्योंकि एस 3 एक आरईएसटी इंटरफ़ेस है और मैं अज्ञात अपलोड की इजाजत दे रहा हूं कि बिना किसी तृतीय पक्ष लाइब्रेरी के एक साधारण HTTP अनुरोध चाल चल सकता है। लेकिन अमेज़ॅन प्रलेखन को पार्स करने की कोशिश कर रहा है, मुझे उम्मीद है कि ऐसा होगा अगर कोई मुझे सही दिशा में इंगित कर सकता है तो इससे प्यार होगा। –

+0

इसे काफी नहीं मिला। अनाम से आप का मतलब है कि आप अपने एस 3 क्रेडेंशियल प्रदान किए बिना फाइल अपलोड करने में सक्षम होना चाहते हैं? मुझे नहीं लगता कि यह संभव है। – rb512

उत्तर

12

जो आप वर्णन करते हैं उसे एक बाल्टी के भीतर लागू किया जा सकता है। आप बाल्टी नीति के माध्यम से विशिष्ट फ़ोल्डर में अज्ञात पहुंच की अनुमति दे सकते हैं, examples देखें या AWS Policy Generator का उपयोग करें। आपके मामले में यह कुछ इस तरह दिख सकता है:

{ 
    "Version": "2008-10-17", 
    "Id": "Policy1346097257207", 
    "Statement": [ 
     { 
      "Sid": "Allow anonymous upload to /incoming", 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": "*" 
      }, 
      "Action": "s3:PutObject", 
      "Resource": "arn:aws:s3:::[your_bucket]/incoming/*" 
     } 
    ] 
} 

यह भी गुमनाम रूप से एक साधारण एचटीएमएल फ़ॉर्म का उपयोग करके अपने बाल्टी में फ़ाइलें अपलोड करना संभव है:

<form action="http://[your_bucket].s3.amazonaws.com/" method="post" enctype="multipart/form-data"> 
    <input type="hidden" name="acl" value="public-read" /> 
    Name: <input type="text" name="key" value="incoming/[filename]" /><br/> 
    File: <input type="file" name="file" /> <br /> 
    <input type="submit" name="submit" value="Upload" /> 
</form>​ 

S3 ब्राउज़र आधारित अपलोड विस्तार से here वर्णित हैं ।

+0

मैंने यह सब देखने के लिए यह जांच नहीं की है कि यह काम करता है जैसे कि मैं चाहता हूं लेकिन बाउंटी जल्द खत्म हो रहा है और मैं नहीं चाहता था कि अगर आप इसे सही मानते हैं तो आपको अंक नहीं मिलेंगे। अच्छा लग रहा है और जल्द ही कुछ परीक्षण करेगा। धन्यवाद! –

3

मैंने हाल ही में एस 3 में अज्ञात अपलोड के इन्स और बहिष्कारों को समझने में थोडा समय बिताया, और इस सवाल पर भी आया। मैं समाधान है कि कम से कुछ लंबाई में ME के ​​लिए काम किया बारे में लिखा था:

https://gist.github.com/jareware/d7a817a08e9eae51a7ea

मूल रूप से आप प्राप्त कर सकते हैं कि तुम क्या, जो प्रमाणीकृत अनुरोध को छोड़कर प्रबंधन के लिए काम नहीं करेगा करना चाहते हैं (या कम से कम मैं नहीं कर रहा हूँ समाधान के बारे में पता है)।

मुझे पता है कि यह एक पुराना सवाल है, लेकिन अगर यह किसी और की मदद करता है तो इसे यहां दस्तावेज़ित करना।