Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách kết nối các dịch vụ AWS khác nhau bằng thư viện Boto3 trong Python


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