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")