AWS SDK 使用說明


AWS 的Python SDK包名為 boto3, 可以使用命令pip install boto3安裝使用

BOTO3中的基本概念

  1. 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()
  2. 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)
    
  3. resource

    這是Resource級別接口里面的概念,Resource分為Service Resource和Individual Resource. Service Resource表示某個服務,而Individual Resource表示某個服務里面的資源

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM