2016-11-02 5 views
22

मैं एक boto3 ग्राहक है:boto3 ग्राहक NoRegionError: आप एक क्षेत्र त्रुटि का उल्लेख करना होगा केवल कभी कभी

boto3.client('kms') 

लेकिन यह नई मशीनों पर होता है, वे खोलने के लिए और करीब गतिशील।

if endpoint is None: 
     if region_name is None: 
      # Raise a more specific error message that will give 
      # better guidance to the user what needs to happen. 
      raise NoRegionError() 

ऐसा क्यों हो रहा है? और क्यों समय का केवल एक हिस्सा?

+0

क्योंकि boto3 क्लाइंट डिफ़ॉल्ट क्रेडेंशियल्स विधि के सेट से AWS प्रोफ़ाइल नहीं ढूंढ सकता है: http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html। – mootmoot

उत्तर

47

एक तरीका या दूसरा आपको boto3 बताना होगा जिसमें आप किस क्षेत्र में kms क्लाइंट बनना चाहते हैं। यह स्पष्ट रूप से किया जा सकता है के रूप में region_name पैरामीटर का उपयोग:

kms = boto3.client('kms', region_name='us-west-2') 

या आप में के रूप में अपने ~/.aws/config फाइल में अपनी प्रोफ़ाइल से संबद्ध एक डिफ़ॉल्ट क्षेत्र हो सकता है:

[default] 
region=us-west-2 

या आप एक ऐसे वातावरण का उपयोग कर सकते के रूप में परिवर्तनीय:

export AWS_DEFAULT_REGION=us-west-2 

लेकिन आपको उस क्षेत्र का उपयोग करने के लिए boto3 बताने की आवश्यकता है।

+0

मैं खुद को कैसे जानता हूं कि किस क्षेत्र का उपयोग करना है? – jononomo

+0

यदि आप मौजूदा संसाधनों तक पहुंचने का प्रयास कर रहे हैं तो वह क्षेत्र चुनें जिसमें वह संसाधन मौजूद हैं। यदि आप नए संसाधन बनाने जा रहे हैं, तो अधिकांश लोग तेजी से प्रतिक्रिया समय के लिए भौगोलिक दृष्टि से निकटतम क्षेत्र चुनते हैं। सभी क्षेत्र सेवाओं के समान सेट का समर्थन नहीं करते हैं, इसलिए यदि आपको किसी विशेष सेवा की ज़रूरत है तो सुनिश्चित करें कि आप इसका समर्थन करने वाले क्षेत्र का चयन करें। – garnaat

+0

मुझे लगता है कि मेरा सवाल है: मुझे कैसे पता चलेगा कि मैंने किस क्षेत्र को पहले ही चुना है? मुझे लगता है कि यह कहीं भी एडब्ल्यूएस यूआई में होना चाहिए ... – jononomo

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