2014-11-04 7 views
7

विकसित करते समय मैंने आयरलैंड में एस 3 बाल्टी का उपयोग किया, जो अच्छी तरह से काम करता था। उत्पादन के लिए मैं एस 3 के नए "फ्रैंकफर्ट" स्थान का उपयोग करना चाहता हूं, लेकिन स्पष्ट रूप से नया फ्रैंकफर्ट क्षेत्र "सिगवी 4" का उपयोग करता है जो मेरी पायथन लिपि को तोड़ता है।एस 3 बोटो और सिगवी 4 का उपयोग कर - गायब होस्ट पैरामीटर

जब निम्नलिखित ब्लॉक जोड़ने ~/.boto करने के लिए, मैं निम्नलिखित त्रुटि मिलती है:

~/.boto:

[s3] 
use-sigv4 = True 

त्रुटि:

File "/usr/lib/python2.6/site-packages/boto/__init__.py", line 141, in connect_s3 
return S3Connection(aws_access_key_id, aws_secret_access_key, **kwargs) 
File "/usr/lib/python2.6/site-packages/boto/s3/connection.py", line 196, in __init__ 
"When using SigV4, you must specify a 'host' parameter." 
boto.s3.connection.HostRequiredError: BotoClientError: When using SigV4, 
you must specify a 'host' parameter. 

किसी को भी कृपया बता सकते हैं मुझे "होस्ट" पैरामीटर निर्दिष्ट करने के लिए कैसे? मैं इस पैरामीटर को aws/boto दस्तावेज़ में नहीं मिला।

+1

अगर आप केवल यूरोपीय संघ के लिए sigv4 उपयोग करना चाहते हैं -central (बहुत बदसूरत): 'os.en वातावरण [' S3_USE_SIGV4 '] =' True'' फिर आपके द्वारा किए जाने के बाद 'del os.environ [' S3_USE_SIGV4 ']' ताकि आपको 'होस्ट' प्रदान न करना पड़े पुराने कोड के लिए। –

उत्तर

8

Here's the docs for your exact error, साथ ही exact source code जो S3Connection (और बदले में, आपकी त्रुटि) बना रहा है।

S3Connection(aws_access_key_id, aws_secret_access_key, **kwargs) बनाने में, आप एक अतिरिक्त आइटम host=..., जो 's3.amazonaws.com' की तरह एक साधारण स्ट्रिंग, या अपने सेटअप के लिए समान होना चाहिए में पारित करने के लिए की जरूरत है।

समाधान:

आप पारित किया जा रहा अपने kwargs को यह जोड़ सकते हैं:

kwargs.update({'host': 's3.amazonaws.com'}) 

या की तरह मैन्युअल रूप से इसे कहते हैं:

S3Connection(aws_access_key_id, aws_secret_access_key, host='s3.amazonaws.com', **kwargs) 
+0

धन्यवाद, मैं आपके उदाहरण के साथ काम कर स्क्रिप्ट प्राप्त करने में कामयाब रहा। क्या आप यह भी जानते हैं कि बोटो कॉन्फ़िगरेशन फ़ाइल में होस्ट पैरामीटर प्रदान करने की संभावना है या नहीं? – fabs

+0

आपको boto.cfg फ़ाइल से मूल्य देना होगा। फ़ंक्शन कॉन्फ़िगरेशन से डिफ़ॉल्ट मान खींचने लगता है, लेकिन केवल त्रुटि उत्पन्न करने के लिए इसे फ़्लैग करने के बाद ही। तो, आपको 'S3Connection' के तत्काल में प्रदान करने के लिए * होगा *। अब, यह कॉन्फ़िगरेशन से आ सकता है, लेकिन ऐसा करने के लिए आप पर निर्भर है। – VooDooNOFX

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