AWS SDK 使用说明
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")
AWS SDK 使用说明的更多相关文章
- 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/ ...
- AmazonS3 使用AWS SDK for Java实现跨源资源共享 (CORS)
CORS 配置 创建 CORS 配置并对存储桶设置该配置 通过添加规则来检索并修改配置 向存储桶添加修改过的配置 删除配置 import com.amazonaws.AmazonServiceExce ...
- ceph rgw s3 java sdk 上传大文件分批的方法
Using the AWS Java SDK for Multipart Upload (High-Level API) Topics Upload a File Abort Multipart Up ...
- golang DynamoDB sdk AccessDeniedException
golang调用aws sdk时候提示: AccessDeniedException: User: arn:aws:sts::818539432014:assumed-role/bj-develop/ ...
- AWS认证权威考经(助理级认证篇)
笔者作为AWS官方认证的早期通过者,已经拿到了AWS的助理级解决方案架构师.开发者认证,系统管理员认证.这几年也陆续指导公司多人通过AWS的认证.本篇文章将分享如何通过自学的方式轻松通过AWS的助理级 ...
- AWS Step Function Serverless Applications
Installing VS Components To follow along with this article, you must have an AWS account and install ...
- AWS 移动推送到iOS设备,Amazon Pinpoint
前言 第一次对接aws,遇到的坑是真多.现在记录一下.本文主要用到的是[Amazon Pinpoint]推送. 开发人员的指南:https://docs.aws.amazon.com/zh_cn/pi ...
- 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 ...
- AWS云使用100条宝贵经验分享
在今天的文章中,我整理出了大量当初曾经错过.而至今仍将我追悔莫及的Amazon Web Services(简称AWS)使用心得.在几年来的实践当中,我通过在AWS之上新手构建及部署各类应用程序而积累到 ...
随机推荐
- Python练习题 037:Project Euler 009:毕达哥拉斯三元组之乘积
本题来自 Project Euler 第9题:https://projecteuler.net/problem=9 # Project Euler: Problem 9: Special Pythag ...
- MySQL 向表中插入、删除数据
一.向表中插入一条信息 1.查看表中的数据 mysql> SELECT * FROM user; +----+---------+----------+ | id | account | pas ...
- JVM 第二篇:垃圾收集器以及算法
本文内容过于硬核,建议有 Java 相关经验人士阅读. 0. 引言 一说到 JVM ,大多数人第一个想到的可能就是 GC ,今天我们就来聊一聊和 GC 关系最大的垃圾收集器以及垃圾收集算法,希望能通过 ...
- vscode编写python,引用本地py文件出现红色波浪线
前言 引用本地py文件出现红色波浪线,如下图: 原因 经过查询得知,vscode中的python插件默认使用的是pylint来做代码检查,因此需要对pylint做一些配置 解决方案 在setting. ...
- java之网络编程1-Tcp
一,了解之前先了解一下网络基础 首先理清一个概念:网络编程 != 网站编程,网络编程现在一般称为TCP/IP编程 一般的网络编程都称为Socket编程,Socket的英文意思是"插座&quo ...
- devops-jenkins分布式构建
1. devops-jenkins分布式构建 1) 点击系统管理 进入节点管理 2) 点击新建节点 3) 进行节点配置在node节点服务器配置,进行java的安装 [root@nginx-backup ...
- ansible-playbook通过github拉取部署Lnmp环境
1. 配置服务器初始化 1.1) 关闭防火墙和selinux 1 [root@test-1 ~]# /bin/systemctl stop firewalld 2 [root@test-1 ~]# ...
- intellij idea如何解决javax.servlet.http不存在
正确的解决方法是:对项目名右键,选中Open Mudule Settings--选择左侧的Modules,选择右边的Dependencies--然后点击右侧边栏的绿色"+"号,点击 ...
- 程序员,想被别人发掘?那你有 freestyle 吗?
程序员群体是偏内向的,整天和计算机打交道,用代码说话,接受任务,默默工作. 如果这些任务是有挑战性的还行,你的工作成果就能帮你说话,可是大部分工作都是普普通通的,甚至有点儿重复性的劳动. 这个时候表面 ...
- Docker下部署springboot项目
1.背景 如何在docker容器环境下部署一个springboot项目? 2.具体步骤 第一步:准备一个springboot项目的xxxx.jar包 jar包中用于测试的一个接口如下 第二步:编写Do ...