Trong bài viết này, chúng ta sẽ xem cách sử dụng thư viện Boto3 trong Python để kết nối với các dịch vụ AWS khác nhau.
Ví dụ
Kết nối với AWS S3.
Kết nối với AWS Glue Job
Kết nối với AWS SQS và nhiều dịch vụ khác.
Phương pháp/Thuật toán giải quyết
Bước 1 – Tạo phiên AWS (session) bằng thư viện Boto3.
Bước 2 – Truyền tên dịch vụ AWS vào client để lấy quyền truy cập dịch vụ cấp thấp (low-level).
Hoặc, truyền tên dịch vụ AWS vào resource để lấy giao diện dịch vụ hướng đối tượng cấp cao (high-level).
Ví dụ
Mã sau kết nối với các dịch vụ AWS khác nhau:
import boto3
# Lấy AWS Client
def getconnection_AWSClient(service_name):
session = boto3.session.Session()
# Người dùng có thể truyền access key, secret_key và token tùy chỉnh
s3_client = session.client(service_name)
return s3_client
print(getconnection_AWSClient('s3')) # kết nối s3
print(getconnection_AWSClient('glue')) # kết nối glue
print(getconnection_AWSClient('sqs')) # kết nối sqs và các dịch vụ khác
# Lấy AWS Resource
def getconnection_AWSResource(service_name):
session = boto3.session.Session()
# Người dùng có thể truyền access key, secret_key và token tùy chỉnh
s3_resource = session.resource(service_name)
return s3_resource
print(getconnection_AWSResource('s3')) # kết nối s3
print(getconnection_AWSResource('sqs')) # kết nối sqs và các dịch vụ khác
Kết quả
<botocore.client.S3 object at 0x00000216C4CB89B0> <botocore.client.Glue object at 0x00000216C5129358> <botocore.client.SQS object at 0x00000216C4E03E10> s3.ServiceResource() sqs.ServiceResource()
Lưu ý: resource không hỗ trợ tất cả các dịch vụ để kết nối. Ví dụ, nếu người dùng cố gắng kết nối dịch vụ glue bằng resource, AWS sẽ ném ra ngoại lệ sau:
boto3.exceptions.ResourceNotExistsError: The 'glue' resource does not exist.
Hãy cân nhắc sử dụng boto3.client('glue') thay vì resource cho 'glue'.
Các dịch vụ sau được hỗ trợ bởi resource:
cloudformation
cloudwatch
dynamodb
ec2
glacier
iam
opsworks
s3
sns
sqs