Mümkün olduğunca basit bir şekilde açıklamaya çalışacağım. Dolayısıyla, gerçek terimlerin doğruluğunun garantisi yoktur.
Oturum , AWS hizmetlerine bağlantının nerede başlatılacağıdır. Örneğin, varsayılan kimlik bilgisi profilini kullanan varsayılan oturum aşağıdadır (örn. ~ / .Aws / kimlik bilgileri veya IAM örnek profilini kullanarak EC2'nizi varsayalım)
sqs = boto3.client('sqs')
s3 = boto3.resource('s3')
Varsayılan oturum kullanılan profil veya örnek profiliyle sınırlı olduğundan, bazen varsayılan oturum yapılandırmasını (ör. Bölge_adı, bitiş noktası_url vb.) Geçersiz kılmak için özel oturumu kullanmanız gerekir.
# 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')
Kaynak : Bu, kullanılması önerilen üst düzey hizmet sınıfıdır. Bu, belirli AWS kaynaklarını bağlamanıza ve aktarmanıza izin verir, böylece bu soyutlamayı hangi hedef hizmetlerin işaret edildiğinden endişe etmekten daha çok kullanırsınız. Oturum bölümünde fark ettiğiniz gibi, özel bir oturumunuz varsa, bu soyut nesneyi, geçmek için tüm özel bölgeler vb. Aşağıda karmaşık bir örnek verilmiştir.
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)
müşteri düşük seviyeli bir sınıf nesnesidir. Her müşteri çağrısı için, hedefleme kaynaklarını açıkça belirtmeniz gerekir, belirlenen hizmet hedefi adı uzun süre iletilmelidir. Soyutlama yeteneğini kaybedeceksiniz.
Örneğin, yalnızca varsayılan oturumla ilgileniyorsanız, boto3.resource öğesine benzer.
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')
Ancak, farklı bölgelerdeki bir gruptaki nesneleri listelemek istiyorsanız, istemci için gereken açık kova parametresini belirtmeniz gerekir.
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')