मैं कोशिश करूँगा और इसे यथासंभव सरल समझाऊंगा। इसलिए वास्तविक शब्दों की सटीकता की कोई गारंटी नहीं है।
सत्र वह है जहां AWS सेवाओं से कनेक्टिविटी शुरू करने के लिए। उदाहरण के बाद डिफ़ॉल्ट सत्र है जो डिफ़ॉल्ट क्रेडेंशियल प्रोफ़ाइल का उपयोग करता है (जैसे ~ / .aws / क्रेडेंशियल, या IAM उदाहरण प्रोफ़ाइल का उपयोग करके अपने EC2 मान लें)
sqs = boto3.client('sqs')
s3 = boto3.resource('s3')
क्योंकि डिफ़ॉल्ट सत्र प्रोफ़ाइल या इंस्टेंस प्रोफ़ाइल की सीमा होती है, कभी-कभी आपको डिफ़ॉल्ट सत्र कॉन्फ़िगरेशन को ओवरराइड करने के लिए कस्टम सत्र का उपयोग करने की आवश्यकता होती है (जैसे कि area_name, endpoint_url, आदि) उदा।
# custom resource session must use boto3.Session to do the override
my_west_session = boto3.Session(region_name = 'us-west-2')
my_east_session = boto3.Session(region_name = 'us-east-1')
backup_s3 = my_west_session.resource('s3')
video_s3 = my_east_session.resource('s3')
# you have two choices of create custom client session.
backup_s3c = my_west_session.client('s3')
video_s3c = boto3.client("s3", region_name = 'us-east-1')
संसाधन : यह उच्च-स्तरीय सेवा वर्ग का उपयोग करने के लिए अनुशंसित है। यह आपको विशेष रूप से AWS संसाधनों से बांधने और इसे पास करने की अनुमति देता है, इसलिए आप बस इस अमूर्तता का उपयोग चिंता की तुलना में करते हैं जो लक्ष्य सेवाओं को इंगित करते हैं। जैसा कि आप सत्र भाग से नोटिस करते हैं, यदि आपके पास एक कस्टम सत्र है, तो आप इस अमूर्त वस्तु को सभी कस्टम क्षेत्रों के बारे में चिंता करने, आदि के साथ पारित करने के लिए पास करते हैं। निम्नलिखित एक जटिल उदाहरण है
import boto3
my_west_session = boto3.Session(region_name = 'us-west-2')
my_east_session = boto3.Session(region_name = 'us-east-1')
backup_s3 = my_west_session.resource("s3")
video_s3 = my_east_session.resource("s3")
backup_bucket = backup_s3.Bucket('backupbucket')
video_bucket = video_s3.Bucket('videobucket')
# just pass the instantiated bucket object
def list_bucket_contents(bucket):
for object in bucket.objects.all():
print(object.key)
list_bucket_contents(backup_bucket)
list_bucket_contents(video_bucket)
क्लाइंट निम्न स्तर की क्लास ऑब्जेक्ट है। प्रत्येक क्लाइंट कॉल के लिए, आपको लक्ष्यीकरण संसाधनों को स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता होती है, नामित सेवा लक्ष्य नाम लंबे पास होना चाहिए। आप अमूर्त क्षमता खो देंगे।
उदाहरण के लिए, यदि आप केवल डिफ़ॉल्ट सत्र से निपटते हैं, तो यह boto3.resource के समान दिखता है।
import boto3
s3 = boto3.client('s3')
def list_bucket_contents(bucket_name):
for object in s3.list_objects_v2(Bucket=bucket_name) :
print(object.key)
list_bucket_contents('Mybucket')
हालांकि, यदि आप विभिन्न क्षेत्रों में एक बाल्टी से वस्तुओं को सूचीबद्ध करना चाहते हैं, तो आपको क्लाइंट के लिए आवश्यक स्पष्ट बाल्टी पैरामीटर निर्दिष्ट करना होगा।
import boto3
backup_s3 = my_west_session.client('s3',region_name = 'us-west-2')
video_s3 = my_east_session.client('s3',region_name = 'us-east-1')
# you must pass boto3.Session.client and the bucket name
def list_bucket_contents(s3session, bucket_name):
response = s3session.list_objects_v2(Bucket=bucket_name)
if 'Contents' in response:
for obj in response['Contents']:
print(obj['key'])
list_bucket_contents(backup_s3, 'backupbucket')
list_bucket_contents(video_s3 , 'videobucket')