2016-09-01 10 views
27

मैं समझने की कोशिश कर रहा हूं कि मुझे Resource का उपयोग करना चाहिए और जब मुझे Client का उपयोग करना चाहिए।कोई boto3 क्लाइंट का उपयोग कब करें और boto3 संसाधन का उपयोग कब करें?

boto3 दस्तावेज़ों में दी गई परिभाषा वास्तव में स्पष्ट नहीं करती है जब यह एक या दूसरे का उपयोग करना बेहतर होता है।

+2

एक और जवाब https://stackoverflow.com/a/42818143/ – anishpatel

उत्तर

33

boto3.resources boto3.client के आस-पास एक उच्च स्तरीय सेवा वर्ग लपेटना है।

इसका मतलब है कि आप संसाधनों को संलग्न करना चाहते हैं, जहां आप मूल संसाधन-आईडी निर्दिष्ट किए बिना अन्य संसाधनों का उपयोग कर सकते हैं।

import boto3 
s3 = boto3.resource("s3") 
bucket = s3.Bucket('mybucket') 

# now bucket is "attached" the S3 bucket name "mybucket" 
print(bucket) 
# s3.Bucket(name='mybucket') 

print(dir(bucket)) 
#show you all class method action you may perform 

OTH, boto3.client, निम्न स्तर हैं आप, एक "प्रवेश वर्ग वस्तु" की जरूरत नहीं है इस प्रकार आप स्पष्ट रूप से सटीक संसाधनों यह हर आपने जो कार्रवाई के लिए करने के लिए कनेक्ट निर्दिष्ट करना होगा।

यह व्यक्तिगत आवश्यकताओं पर निर्भर करता है। हालांकि, boto3.resources सभी boto3.client कार्यक्षमता को लपेटता नहीं है, इसलिए कभी-कभी आपको boto3.client को कॉल करने की आवश्यकता होती है, या काम पूरा करने के लिए boto3.resource.meta.client() का उपयोग करें।

+1

धन्यवाद, यह थोड़ा सा मदद करता है, प्रलेखन स्वयं थोड़ा अस्पष्ट है, लेकिन मुझे लगता है कि कुंजी यह है कि क्लाइंट विशिष्ट एपीआई कॉल को मैप कर सकते हैं जिन्हें आप बना सकते हैं । –

+0

मैं ग्राहक को पैरामीटर के रूप में प्रमाण पत्र पास करके अपने ग्राहक को प्रारंभ करना। आयात boto3 ग्राहक = boto3.client ( 's3', aws_access_key_id = ACCESS_KEY, aws_secret_access_key = SECRET_KEY )। क्या मैं संसाधन के लिए कुछ ऐसा कर सकता हूं? मैं इसे दस्तावेज़ीकरण में नहीं ढूंढ पा रहा हूं। – Naveen

+0

@Naveen हार्ड कोडित एपीआई कुंजी पास करने की अनुशंसा नहीं है। यदि आप जोर देते हैं, तो आप boto3.session का उपयोग कर सकते हैं और सत्र से अपने संसाधन को तुरंत चालू कर सकते हैं। चारों ओर बहुत उदाहरण है। – mootmoot

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