2015-10-23 9 views
27

जब मैं बस निम्न कोड चलाता हूं, तो मुझे हमेशा यह त्रुटि मिलती है।Boto3 त्रुटि: botocore.exceptions.No.Noredentials त्रुटि: क्रेडेंशियल्स का पता लगाने में असमर्थ

s3 = boto3.resource('s3') 
    bucket_name = "python-sdk-sample-%s" % uuid.uuid4() 
    print("Creating new bucket with name:", bucket_name) 
    s3.create_bucket(Bucket=bucket_name) 

मैं कहाँ Boto अपनी उपलब्धियों को पढ़ना चाहिए से

C:\Users\myname\.aws\credentials में मेरी क्रेडेंशियल फ़ाइल सहेज लें,।

क्या मेरी सेटिंग गलत है?

यहां boto3.set_stream_logger('botocore', level='DEBUG') से आउटपुट है।

2015-10-24 14:22:28,761 botocore.credentials [DEBUG] Skipping environment variable credential check because profile name was explicitly set. 
2015-10-24 14:22:28,761 botocore.credentials [DEBUG] Looking for credentials via: env 
2015-10-24 14:22:28,773 botocore.credentials [DEBUG] Looking for credentials via: shared-credentials-file 
2015-10-24 14:22:28,774 botocore.credentials [DEBUG] Looking for credentials via: config-file 
2015-10-24 14:22:28,774 botocore.credentials [DEBUG] Looking for credentials via: ec2-credentials-file 
2015-10-24 14:22:28,774 botocore.credentials [DEBUG] Looking for credentials via: boto-config 
2015-10-24 14:22:28,774 botocore.credentials [DEBUG] Looking for credentials via: iam-role 
+1

आप ('botocore' स्तर = 'डीबग') 'boto3.set_stream_logger जोड़कर डिबग आउटपुट पोस्ट कर सकते हैं' अपने कोड से पहले? यह दिखाएगा कि यह क्रेडेंशियल की तलाश में है। – jamesls

+0

ऐसा लगता है कि बोटो क्रेडेंशियल कॉन्फ़िगरेशन फ़ाइल के लिए बहुत कम स्थानों की तलाश में है, लेकिन स्पष्ट रूप से किसी कारण से मेरी होम निर्देशिका में नहीं दिखता है ... –

+1

पर्यावरण चर '' HOME'' को ''C' पर इंगित करने का प्रयास करें \ उपयोगकर्ता \ myname'' या सेटिंग ''AWS_SHARED_CREDENTIALS_FILE'' को सीधे अपनी क्रेडेंशियल्स फ़ाइल पर इंगित करने के लिए। – garnaat

उत्तर

13

आप देख रहे हैं एक वैकल्पिक तरीका के लिए, टर्मिनल प्रकार से AmazonCLI

का उपयोग कर अपने क्रेडेंशियल्स जोड़ने का प्रयास करें: -

aws configure 

तो अपनी चाबी और इस क्षेत्र में भरें।

+0

यह मेरे लिए काम किया। –

17

मुझे एक ही समस्या थी और पता चला कि मेरी ~/.aws/credentials फ़ाइल का प्रारूप गलत था।

यह युक्त एक फ़ाइल के साथ काम किया:

[default] 
aws_access_key_id=XXXXXXXXXXXXXX 
aws_secret_access_key=YYYYYYYYYYYYYYYYYYYYYYYYYYY 

नोट कि प्रोफ़ाइल नाम "[default]" होना चाहिए। कुछ आधिकारिक दस्तावेज "[credentials]" नाम की एक प्रोफ़ाइल का संदर्भ देते हैं, जो मेरे लिए काम नहीं करता था।

+0

विंडोज़ पर भी काम करता है (सी: \ उपयोगकर्ता \ उपयोगकर्ता \ .aws \ credentials) –

+2

आप निर्दिष्ट कर सकते हैं कि boto3 में सत्र = boto3.Session (profile_name = ) –

26

कोशिश को निर्दिष्ट कुंजी मैन्युअल

s3 = boto3.resource('s3', 
     aws_access_key_id=ACCESS_ID, 
     aws_secret_access_key=ACCESS_KEY) 
+0

का उपयोग करके कौन सी प्रोफ़ाइल का उपयोग करना है, इस तरह से सीधे काम करते समय उपयोगी होता है Django। धन्यवाद। – Joepreludian

+0

यह अधिक खतरनाक है क्योंकि आप अपने कोड में अपने रहस्य डाल रहे हैं जो संस्करण नियंत्रण में समाप्त हो सकता है। –

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