如何使用 Python 中的 Boto3 库连接不同的 AWS 服务?


在本文中,我们将了解如何使用 Python 中的 Boto3 库连接不同的 AWS 服务。

示例

  • 连接 AWS S3。

  • 连接 AWS Glue 作业

  • 连接 AWS SQS 等等。

解决此问题的方法/算法

步骤 1 - 使用 Boto3 库创建一个 AWS 会话。

步骤 2 - 将 AWS 服务名称传递给 client 以获取低级服务访问权限。

或者,将 AWS 服务名称传递给 resource 以获取高级面向对象的 服务访问权限/高级接口。

示例

以下代码连接不同的 AWS 服务:

import boto3
# To get AWS Client
def getconnection_AWSClient(service_name):
   session = boto3.session.Session()
   # User can pass customized access key, secret_key and token as well
   s3_client = session.client(service_name)
   return s3_client
print(getconnection_AWSClient('s3')) # for s3 connection
print(getconnection_AWSClient('glue')) # for glue connection
print(getconnection_AWSClient('sqs')) # for sqs connection and other services

# To get AWS Resource
def getconnection_AWSResource(service_name):
   session = boto3.session.Session()
   # User can pass customized access key, secret_key and token as well
   s3_resource = session.resource(service_name)
   return s3_resource

print(getconnection_AWSResource('s3')) # for s3 connection
print(getconnection_AWSResource('sqs')) # for sqs connection and other services

输出

<botocore.client.S3 object at 0x00000216C4CB89B0>
<botocore.client.Glue object at 0x00000216C5129358>
<botocore.client.SQS object at 0x00000216C4E03E10>
s3.ServiceResource()
sqs.ServiceResource()

请注意,resource 并不支持所有服务的连接。例如,如果用户尝试使用resource连接 Glue 服务,则 AWS 会抛出以下异常:

boto3.exceptions.ResourceNotExistsError: 'glue' 资源不存在。

请考虑使用 boto3.client('glue') 代替 'glue' 的 resource

以下服务受 resource 支持:

  • cloudformation

  • cloudwatch

  • dynamodb

  • ec2

  • glacier

  • iam

  • opsworks

  • s3

  • sns

  • sqs

更新于:2021年3月22日

626 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告