Boto3是什么
通过适用于 Python 的 AWS 开发工具包 boto3 , 可以支持您轻松将 Python 应用程序、库或脚本与 AWS 服务进行集成,包括 Amazon S3、Amazon EC2 和 Amazon DynamoDB 等。
Boto 是AWS的基于python的SDK(当然还支持其他语言的SDK,例如Ruby, Java等),Boto允许开发人员编写软件时使用亚马逊等服务像S3和EC2等,Boto提供了简单,面向对象的API,也提供了低等级的服务接入。
安装和配置
安装boto3和awscli:pip install boto3 awscli
配置aws:aws configure
根据提示输入access_key_id, secret_access_key和 region。
其中access_key_id, secret_access_key的默认存储位置为:~/.aws/credentials:
[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY
region的存储位置为~/.aws/config:
[default]
region=us-east-1
快速开始
如下代码,首先创建一个s3服务,然后查看全部Bucket,最后上传一个文件。
import boto3
# Let's use Amazon S3
s3 = boto3.resource('s3')
# Print out bucket names
for bucket in s3.buckets.all():
print(bucket.name)
# Upload a new file
data = open('test.jpg', 'rb')
s3.Bucket('my-bucket').put_object(Key='test.jpg', Body=data)
Session&client&resource
Boto3 有两个独特的 API 级别。client(或“低级别”)API 提供对基础 HTTP API 操作的一对一映射。 resource API 隐藏显式网络调用,而是提供资源对象和集合以访问属性并执行操作。
其中低级 API 是和 AWS 的 HTTP 接口一一对应的,通过 boto3.client(“xxx”) 暴露。高级接口是面向对象的,更加易于使用,通过 boto3.resource(“xxx”) 暴露,美中不足是不一定覆盖了所有的 API.
- Client级别的接口则是返回Dictionary来表示查询到的资源信息。而Resource级别的接口是对Client级别的接口进行了面向对象的封装,接口的返回值大部分都是Resource对象(如果返回值是某个Resource的信息的话),我们可以对返回的对象再进行操作(比如删除,修改等)。所以一般通过如下代码来得到Resource级别的API对象和Client级别的API对象:
res = boto3.resource('service name')
client = boto3.client('service name')
- session是对一组configuration的抽象表达,通过同一session调用的所有api共享一组configuration. session也是访问所有API的入口。默认的session是boto3.
session = boto3.session.Session('profilename', 'regionname')
client = session.client('service name')
-
Resource分为Service Resource和Individual Resource. Service Resource表示某个服务,而Individual Resource表示某个服务里面的资源
3.1 resource identifier
Resource的唯一标示符,一般就是id或是url。很明显Service Resource不需要identifier,因为它是通过名字标识(例如:‘ec2’)
3.2 attribute
其实就是Resource的属性
3.3 action
就是Resource支持的操作
3.4 subResource
Resource的子级Resource,可以通过identifier来获取Resource对象
3.5 collection
Resource的子级Resource的集合,可以对collection进行查询,筛选等(对AWS的网络请求只有在collection执行操作(遍历,转换为list, 批量处理)的时候才会产生并发出) -
一般使用方式
4.1 Resource级别文章来源:https://www.toymoban.com/news/detail-403649.html
var serviceRes = boto3.resource('ec2') //得到Service Resource
var instance = serviceRes.create_instances(**kwargs) //执行Service Resource级别的操作
var instance = serviceRes.Instance(id) // 通过identifier得到Sub Resource(Individual Resource)
var instances = serviceRes.instances.filter(filter) // 通过filter得到一个Sub Resource的collection
instance.start() //执行Sub Resource上的操作
4.2 Client级别文章来源地址https://www.toymoban.com/news/detail-403649.html
var ec2Client = boto3.client('ec2') //得到对应服务的client
ec2Client.run_instances(**kwargs) //执行操作
到了这里,关于【Boto3学习笔记】session client resource的区别和使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!