AWS 的Python SDK包名为 boto3, 可以使用命令
pip install boto3
安装使用
BOTO3中的基本概念
-
boto3提供了两个级别的接口来访问AWS服务:High Level的Resource级别的接口,Low Level的Client接口
Client级别的接口则是返回Dictionary来表示查询到的资源信息。而Resource级别的接口是对Client级别的接口进行了面向对象的封装,接口的返回值大部分都是Resource对象(如果返回值是某个Resource的信息的话),我们可以对返回的对象再进行操作(比如删除,修改等)。
全局设置包括:
boto3.set_stream_logger(name='boto3', level=10, format_string=None)
设置日志级别boto3.setup_default_session(**kwargs)
设置默认session
重要入口类包括:
boto3.resource(*args, **kwargs)
:最终会调用session包下的resource函数boto3.session.Session.resource()
boto3.client(*args, **kwargs)
:最终会调用session包下的resource函数boto3.session.Session.client()
-
session
session是对一组configuration的抽象表达,通过同一session调用的所有api共享一组configuration. session也是访问所有API的入口。默认的session是boto3.
-
get_available_partitions()
:获取可用分区列表 -
get_available_regions()
:获取可用region列表 -
available_profiles
:获取可用的配置文件目录 -
get_available_regions(service_name, partition_name='aws', allow_non_regional=False)
:获取可用分区 -
get_available_resources()
:获取可用资源列表,也就是可以用sess.resource(service_name)函数获取的服务列表 -
get_awailable_services()
:获取可用服务列表,也就是可以用sess.client(service_name)函数获取的服务列表 -
get_credentials()
:和此session有关的秘钥,使用botocore.credential.Credential对象存储。
利用Session可以构建最重要的两个入口类:
resource(service_name, region_name=None, api_version=None, use_ssl=True, verify=None, endpoint_url=None, aws_access_key_id=None, aws_secret_access_key=None, aws_session_token=None, config=None) client(service_name, region_name=None, api_version=None, use_ssl=True, verify=None, endpoint_url=None, aws_access_key_id=None, aws_secret_access_key=None, aws_session_token=None, config=None)
-
-
resource
这是Resource级别接口里面的概念,Resource分为Service Resource和Individual Resource. Service Resource表示某个服务,而Individual Resource表示某个服务里面的资源
-
Configuration
boto3会依次查找如下位置的配置,直到找到配置为止(也就是如下配置优先级递减):
- boto.client()方法中的参数
- 创建session时传递的参数
- 环境变量
- Shared credential file (~/.aws/credentials)
- AWS config file (~/.aws/config)
- Assume Role provider
- Boto2 config file (/etc/boto.cfg and ~/.boto)
- Instance metadata service on an Amazon EC2 instance that has an IAM role configured.
SDK设置AK SK的N种方法
在AWS的控制台中,使用根账号登陆,创建用户的时候允许编程访问形式,并保存下生成的CSV文件,一定要保存好,这个文件只会在创建时生成一次。
官方推荐设置方法
此方法适用于调用SDK的程序,以及aws-cli使用
在系统 家目录下,创建一个隐藏目录.aws
。所有的设置文件都在该目录下设置
windows: C:\Users\xxx\.aws
Mac & Linux: ~/.aws/
目录下文件所能设置的内容
credentials: 用来配置AWS中的 AK SK
[default]
aws_access_key_id = xxxxxxxxxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
config: 用来设置常用的一些默认参数
[default]
output = json # 默认输出类型为json
region = us-west-1 # 默认可用region区域
注意:配置文件中不能填写中文,否则SDK调用时会报错
代码中动态指定
-
在初始化resource时指定
import boto3 # 这里的配置设定,只针对于初始化的S3这个方法 s3 = boto3.resource( "s3", aws_access_key_id='xxxxxxxxxxxxxxxx', aws_secret_access_key='xxxxxxxxxxxxxxxxxxxxxx', region_name='us-west-1' ) rds = boto3.resource( "rds", aws_access_key_id='xxxxxxxxxxxxxxxx', aws_secret_access_key='xxxxxxxxxxxxxxxxxxxxxx', region_name='us-west-2' )
-
指定默认session的参数
import boto3 # 这里设定后,所有使用boto3的库全部继承此配置 boto3.setup_default_session( aws_access_key_id='xxxxxxxxxxxxxxx', aws_secret_access_key='xxxxxxxxxxxxxxxxxxxxxxxxxx', region_name='us-west-1' ) # 此时,s3和rds方法,使用的配置都是上边boto3的 s3 = boto3.resource("s3") rds = boto3.resource("rds")