Saya akan mencoba menjelaskannya sesederhana mungkin. Jadi tidak ada jaminan keakuratan istilah yang sebenarnya.
Session adalah tempat untuk memulai konektivitas ke layanan AWS. Misalnya, berikut adalah sesi default yang menggunakan profil kredensial default (mis. ~ / .Aws / kredensial, atau asumsikan EC2 Anda menggunakan profil instance IAM)
sqs = boto3.client('sqs')
s3 = boto3.resource('s3')
Karena sesi default dibatasi untuk profil atau profil instan yang digunakan, kadang-kadang Anda perlu menggunakan sesi khusus untuk mengganti konfigurasi sesi default (mis. Region_name, endpoint_url, dll.) Mis.
# 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')
Sumberdaya : Ini adalah kelas layanan tingkat tinggi yang direkomendasikan untuk digunakan. Ini memungkinkan Anda untuk mengikat sumber daya AWS tertentu dan meneruskannya, jadi Anda hanya menggunakan abstraksi ini daripada khawatir layanan target mana yang diarahkan. Seperti yang Anda perhatikan dari bagian sesi, jika Anda memiliki sesi khusus, Anda hanya melewatkan objek abstrak ini daripada mengkhawatirkan semua wilayah kustom, dll untuk meneruskan. Berikut ini adalah contoh rumit Eg
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)
Klien adalah objek kelas tingkat rendah. Untuk setiap panggilan klien, Anda harus secara spesifik menentukan sumber daya penargetan, nama target layanan yang ditunjuk harus panjang. Anda akan kehilangan kemampuan abstraksi.
Misalnya, jika Anda hanya berurusan dengan sesi default, ini mirip dengan 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')
Namun, jika Anda ingin membuat daftar objek dari ember di berbagai wilayah, Anda perlu menentukan parameter bucket eksplisit yang diperlukan untuk klien.
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')