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

AWS SDK 使用说明的更多相关文章

  1. AWS SDK for C++调用第三方S3 API

    这里介绍AWS SDK for C++ 1.0.x版本,比如下载: https://github.com/aws/aws-sdk-cpp/archive/1.0.164.tar.gz 环境:RHEL/ ...

  2. AmazonS3 使用AWS SDK for Java实现跨源资源共享 (CORS)

    CORS 配置 创建 CORS 配置并对存储桶设置该配置 通过添加规则来检索并修改配置 向存储桶添加修改过的配置 删除配置 import com.amazonaws.AmazonServiceExce ...

  3. ceph rgw s3 java sdk 上传大文件分批的方法

    Using the AWS Java SDK for Multipart Upload (High-Level API) Topics Upload a File Abort Multipart Up ...

  4. golang DynamoDB sdk AccessDeniedException

    golang调用aws sdk时候提示: AccessDeniedException: User: arn:aws:sts::818539432014:assumed-role/bj-develop/ ...

  5. AWS认证权威考经(助理级认证篇)

    笔者作为AWS官方认证的早期通过者,已经拿到了AWS的助理级解决方案架构师.开发者认证,系统管理员认证.这几年也陆续指导公司多人通过AWS的认证.本篇文章将分享如何通过自学的方式轻松通过AWS的助理级 ...

  6. AWS Step Function Serverless Applications

    Installing VS Components To follow along with this article, you must have an AWS account and install ...

  7. AWS 移动推送到iOS设备,Amazon Pinpoint

    前言 第一次对接aws,遇到的坑是真多.现在记录一下.本文主要用到的是[Amazon Pinpoint]推送. 开发人员的指南:https://docs.aws.amazon.com/zh_cn/pi ...

  8. Automated EBS Snapshots using AWS Lambda & CloudWatch

    Overview In this post, we'll cover how to automate EBS snapshots for your AWS infrastructure using L ...

  9. AWS云使用100条宝贵经验分享

    在今天的文章中,我整理出了大量当初曾经错过.而至今仍将我追悔莫及的Amazon Web Services(简称AWS)使用心得.在几年来的实践当中,我通过在AWS之上新手构建及部署各类应用程序而积累到 ...

随机推荐

  1. DX12龙书 00 - 环境配置:通过 Visual Studio 2019 运行示例项目

    0x00 安装 Visual Studio 2019 安装 Visual Studio 2019 以及相关组件. 注:安装组件时带的 Windows 10 SDK 可以在 Individual com ...

  2. 解决mybatis-plus更新数据的时候,有值为空导致更新失败的问题

    问题 在用mybatis-plus更新数据的时候,更新失败,错误信息如下: Cause: org.apache.ibatis.type.TypeException: Could not set par ...

  3. Java基础系列-SPI你认识吗

    原创文章,转载请标注出处:https://www.cnblogs.com/V1haoge/p/10755313.html 一.SPI是什么 SPI是相对API而言的. API指的是应用对服务调用方提供 ...

  4. 警惕char类型直接相加

    今天在写某个程序需要对两个数字字符串进行相加操作,比如字符串1:12345,字符串2:23456.需要1和2相加.2和3相加.就是两个字符相同位置的数进行相加. 这个一看很好完成,写一个for,然后取 ...

  5. lua 源码阅读 1.1 -> 2.1

    lua 1.1 阅读1. hash.c 中 a) 对建立的 Hash *array 用 listhead 链式结构来管理,新增lua_hashcollector,用来做 Hash 的回收处理. ps: ...

  6. C++ concurrent_queue

    ConcurrentQueue 用C++11提供的多线程类实现一个线程安全的队列: #include <queue> #include <mutex> #include < ...

  7. 【编程学习笔记】如何组织构建多文件 C 语言程序!编程也有~

    优秀 Unix 程序哲学 首先,你要知道这个 C 程序是一个 Unix 命令行工具.这意味着它运行在(或者可被移植到)那些提供 Unix C 运行环境的操作系统中.当贝尔实验室发明 Unix 后,它从 ...

  8. spring boot:使用spring cache+caffeine做进程内缓存(本地缓存)(spring boot 2.3.1)

    一,为什么要使用caffeine做本地缓存? 1,spring boot默认集成的进程内缓存在1.x时代是guava cache 在2.x时代更新成了caffeine, 功能上差别不大,但后者在性能上 ...

  9. centos 下安装redis 通过shell脚本

      #! /bin/bash echo -e "开始安装redis服务\n" download_url=http://download.redis.io/releases/redi ...

  10. 本地ssh快速登录 ssh免密登录

    每次登录都要ssh -p wang@xx.xx.xx.xx 虽然做了公钥验证 https://www.cnblogs.com/php-linux/p/10795913.html 不需要输入密码,但是每 ...