CloudFront से कनेक्ट करने के लिए boto3 का उपयोग करते समय AWS प्रोफ़ाइल कैसे चुनें


127

मैं बोटो 3 पायथन लाइब्रेरी का उपयोग कर रहा हूं, और AWS CloudFront से जुड़ना चाहता हूं। मुझे सही AWS प्रोफ़ाइल (AWS क्रेडेंशियल) निर्दिष्ट करने की आवश्यकता है, लेकिन आधिकारिक दस्तावेज़ीकरण को देखते हुए, मुझे इसे निर्दिष्ट करने का कोई तरीका नहीं दिख रहा है।

मैं कोड का उपयोग करके क्लाइंट को इनिशियलाइज़ कर रहा हूँ: client = boto3.client('cloudfront')

हालाँकि, इसमें यह डिफ़ॉल्ट प्रोफ़ाइल से कनेक्ट करने के लिए उपयोग करता है। मुझे ऐसी कोई विधि नहीं मिली जहां मैं यह निर्दिष्ट कर सकूं कि किस प्रोफ़ाइल का उपयोग करना है।


इसे भी देखें: प्रोफाइल के साथ AWS S3 की एक फ़ाइल पढ़ें और डाउनलोड करें
मार्टिन थोमा

क्या आपने कोड में कुंजियों का उपयोग करने की कोशिश की है? (यह भी आप कोड से इसे छिपाने के लिए env var का उपयोग कर सकते हैं)client = boto3.client('s3', aws_access_key_id = '<access-key>', aws_secret_access_key = '<secret-key>')
इवान कैरास्को क्विरोज़

जवाबों:


224

मुझे लगता है कि डॉक्स ऐसा करने के तरीके को उजागर करने में अद्भुत नहीं हैं। यह कुछ समय के लिए एक समर्थित विशेषता रही है, और इस पुल अनुरोध में कुछ विवरण हैं

तो ऐसा करने के तीन अलग-अलग तरीके हैं:

विकल्प ए) प्रोफ़ाइल के साथ एक नया सत्र बनाएं

    dev = boto3.session.Session(profile_name='dev')

विकल्प बी) कोड में डिफ़ॉल्ट सत्र का प्रोफ़ाइल बदलें

    boto3.setup_default_session(profile_name='dev')

विकल्प सी) एक पर्यावरण चर के साथ डिफ़ॉल्ट सत्र का प्रोफ़ाइल बदलें

    $ AWS_PROFILE=dev ipython
    >>> import boto3
    >>> s3dev = boto3.resource('s3')

1
Env चर AWS_PROFILE नहीं होना चाहिए?
स्टेफानो एम

उसके लिए धन्यवाद! वह जानकारी अब तक कहीं भी नहीं मिली। ऐसा लगता है कि मुझे इस काम को करने के लिए केवल चरण 2 की आवश्यकता थी। चरण 1 क्या किया? (चूंकि देव चर का उपयोग नहीं किया गया है या किसी और चीज में पारित नहीं हुआ है?)
मार्क

40
वे विकल्प हैं, कदम नहीं। पहले विकल्प में आप डिफ़ॉल्ट सत्र के बजाय उपयोग करने के लिए एक नया सत्र बनाते हैं। ताकि सत्र के साथ एक ग्राहक बनाने के लिए आप की तरह कुछ करना होगा dev.client('s3')बजायboto3.client('s3')
Jordon फिलिप्स

ऑफ टॉपिक, ipythonमेरे लिए भी उपयोगी था।
माइक डी

7
प्रोफ़ाइल सूची का उपयोग कर प्राप्त करें boto3.session.Session().available_profiles- यह एक सूची है। इसके बाद आप जो @ जोर्डन-फिलिप्स चाहते हैं उसका उपयोग करें।
Daisuke Aramaki

35

नाम 'देव' के साथ एक प्रोफ़ाइल का उपयोग करने के लिए ऐसा करें:

session = boto3.session.Session(profile_name='dev')
s3 = session.resource('s3')
for bucket in s3.buckets.all():
    print(bucket.name)

24

Boto3 प्रलेखन का यह खंड सहायक है।

यहाँ मेरे लिए क्या काम किया गया है:

session = boto3.Session(profile_name='dev')
client = session.client('cloudfront')

5

क्लाइंट कॉल से पहले बस सत्र कॉन्फ़िगरेशन में प्रोफ़ाइल जोड़ें। boto3.session.Session(profile_name='YOUR_PROFILE_NAME').client('cloudwatch')

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.