Tôi sẽ thử và giải thích nó đơn giản nhất có thể. Vì vậy, không có gì đảm bảo tính chính xác của các điều khoản thực tế.
Phiên là nơi để bắt đầu kết nối với các dịch vụ AWS. Ví dụ: sau đây là phiên mặc định sử dụng hồ sơ thông tin mặc định (ví dụ ~ / .aws / thông tin đăng nhập hoặc giả sử EC2 của bạn sử dụng hồ sơ cá nhân IAM)
sqs = boto3.client('sqs')
s3 = boto3.resource('s3')
Vì phiên mặc định là giới hạn đối với cấu hình hoặc cấu hình thể hiện được sử dụng, đôi khi bạn cần sử dụng phiên tùy chỉnh để ghi đè cấu hình phiên mặc định (ví dụ: tên_bảng, endpoint_url, v.v.)
# 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')
Tài nguyên : Đây là lớp dịch vụ cấp cao được khuyến nghị sử dụng. Điều này cho phép bạn liên kết các tài nguyên AWS cụ thể và chuyển nó đi, vì vậy bạn chỉ cần sử dụng sự trừu tượng này hơn là lo lắng dịch vụ mục tiêu nào được trỏ đến. Như bạn nhận thấy từ phần phiên, nếu bạn có một phiên tùy chỉnh, bạn chỉ cần vượt qua đối tượng trừu tượng này hơn là lo lắng về tất cả các vùng tùy chỉnh, v.v. Sau đây là một ví dụ phức tạp
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)
Khách hàng là một đối tượng lớp cấp thấp. Đối với mỗi cuộc gọi của khách hàng, bạn cần chỉ định rõ ràng các tài nguyên nhắm mục tiêu, tên mục tiêu dịch vụ được chỉ định phải được truyền dài. Bạn sẽ mất khả năng trừu tượng.
Ví dụ: nếu bạn chỉ xử lý phiên mặc định, giao diện này tương tự như 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')
Tuy nhiên, nếu bạn muốn liệt kê các đối tượng từ một nhóm trong các vùng khác nhau, bạn cần chỉ định tham số nhóm rõ ràng cần thiết cho máy khách.
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')