【Boto3学习笔记】session client resource的区别和使用

这篇具有很好参考价值的文章主要介绍了【Boto3学习笔记】session client resource的区别和使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Boto3是什么

通过适用于 Python 的 AWS 开发工具包 boto3 , 可以支持您轻松将 Python 应用程序、库或脚本与 AWS 服务进行集成,包括 Amazon S3、Amazon EC2 和 Amazon DynamoDB 等。
Boto 是AWS的基于python的SDK(当然还支持其他语言的SDK,例如Ruby, Java等),Boto允许开发人员编写软件时使用亚马逊等服务像S3和EC2等,Boto提供了简单,面向对象的API,也提供了低等级的服务接入。

安装和配置

安装boto3和awscli:pip install boto3 awscli
配置aws:aws configure

根据提示输入access_key_id, secret_access_key和 region。

其中access_key_id, secret_access_key的默认存储位置为:~/.aws/credentials:

[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY

region的存储位置为~/.aws/config:
[default]
region=us-east-1

快速开始

如下代码,首先创建一个s3服务,然后查看全部Bucket,最后上传一个文件。

import boto3

# Let's use Amazon S3
s3 = boto3.resource('s3')
# Print out bucket names
for bucket in s3.buckets.all():
    print(bucket.name)
# Upload a new file
data = open('test.jpg', 'rb')
s3.Bucket('my-bucket').put_object(Key='test.jpg', Body=data)

Session&client&resource

Boto3 有两个独特的 API 级别。client(或“低级别”)API 提供对基础 HTTP API 操作的一对一映射。 resource API 隐藏显式网络调用,而是提供资源对象和集合以访问属性并执行操作。
其中低级 API 是和 AWS 的 HTTP 接口一一对应的,通过 boto3.client(“xxx”) 暴露。高级接口是面向对象的,更加易于使用,通过 boto3.resource(“xxx”) 暴露,美中不足是不一定覆盖了所有的 API.

  1. Client级别的接口则是返回Dictionary来表示查询到的资源信息。而Resource级别的接口是对Client级别的接口进行了面向对象的封装,接口的返回值大部分都是Resource对象(如果返回值是某个Resource的信息的话),我们可以对返回的对象再进行操作(比如删除,修改等)。所以一般通过如下代码来得到Resource级别的API对象和Client级别的API对象:
      res = boto3.resource('service name')
      client = boto3.client('service name')
  1. session是对一组configuration的抽象表达,通过同一session调用的所有api共享一组configuration. session也是访问所有API的入口。默认的session是boto3.
  session = boto3.session.Session('profilename', 'regionname')
  client = session.client('service name')
  1. Resource分为Service Resource和Individual Resource. Service Resource表示某个服务,而Individual Resource表示某个服务里面的资源
    3.1 resource identifier
    Resource的唯一标示符,一般就是id或是url。很明显Service Resource不需要identifier,因为它是通过名字标识(例如:‘ec2’)
    3.2 attribute
    其实就是Resource的属性
    3.3 action
    就是Resource支持的操作
    3.4 subResource
    Resource的子级Resource,可以通过identifier来获取Resource对象
    3.5 collection
    Resource的子级Resource的集合,可以对collection进行查询,筛选等(对AWS的网络请求只有在collection执行操作(遍历,转换为list, 批量处理)的时候才会产生并发出)

  2. 一般使用方式
    4.1 Resource级别

var serviceRes = boto3.resource('ec2') //得到Service Resource
var instance = serviceRes.create_instances(**kwargs) //执行Service Resource级别的操作
var instance = serviceRes.Instance(id) // 通过identifier得到Sub Resource(Individual Resource)
var instances = serviceRes.instances.filter(filter) // 通过filter得到一个Sub Resource的collection
instance.start() //执行Sub Resource上的操作

4.2 Client级别文章来源地址https://www.toymoban.com/news/detail-403649.html

var ec2Client = boto3.client('ec2') //得到对应服务的client
ec2Client.run_instances(**kwargs) //执行操作

到了这里,关于【Boto3学习笔记】session client resource的区别和使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Django学习】(十六)session_token认证过程与区别_响应定制

    这里就直接引用别人的文章,不做过多说明 网络应用中session和token本质是一样的吗,有什么区别? - 知乎 在全局配置表中配置 rest_framework_jwt/views.py中 ​  查看ObtainJSONWebToken类: 发现里面引用了JSONWebTokenSerializer序列化器类 ​ users应用的url.py 引用obtain_jwt_token  发现rest_fra

    2024年02月15日
    浏览(39)
  • 会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记

    1.1 Cookie 1. Cookie:是一种客户端会话技术,数据会被保存在客户端,Cookie会携带数据访问服务器,用以完成一次会话内多次请求间的数据共享 2. 过程:浏览器(客户端)先向服务端发送请求,服务端会发送一个Cookie给客户端,在此后同一次会话中,每次客户端都会将Cookie发送

    2024年02月10日
    浏览(47)
  • sessionStorage和localStorage 的区别和使用,具体与 session 区分

    sessionStorage和localStorage是浏览器提供的Web Storage机制,用于存储在客户端(浏览器)本地的数据。它们之间的区别主要体现在以下几个方面: 1. 数据作用域: - sessionStorage:存储在sessionStorage中的数据仅在当 前会话期间有效 ,即在浏览器同一个窗口或标签页打开的时间范围内

    2024年02月09日
    浏览(37)
  • 【Python】Web学习笔记_flask(6)——会话&session对象

    处理利用cookie来判断用户登录外,也可以使用session来判断用户是否登录 html代码和cookie对象的设置相同    

    2024年02月12日
    浏览(48)
  • OAuth2.0 实践 Spring Authorization Server 搭建授权服务器 + Resource + Client

    title: OAuth2.0 实践 Spring Authorization Server 搭建授权服务器 + Resource + Client date: 2023-03-27 01:41:26 tags: OAuth2.0 Spring Authorization Server categories: 开发实践 cover: https://cover.png feature: false 目前 Spring 生态中的 OAuth2 授权服务器是 Spring Authorization Server ,原先的 Spring Security OAuth 已经停止更新

    2024年02月08日
    浏览(58)
  • Failed to create Spark client for Spark session/30041Code

    记录排错历程         问题简介:根据尚硅谷数仓4.0学习集群运行了一段时间,可以正常使用spark运行,出现阶段运行情况的红色框,但是不知道为什么突然有一次,返回30041code,无法运行创建spark session。 第一种情况:多尝试运行几次         刚开始是觉得集群内存不足,

    2024年02月02日
    浏览(44)
  • 详细解决redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool

    今天从 gitlab 上下载本公司的项目,但在启动时报出如下错误: 具体的错误信息为 redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool 。 根据上述报错信息可知,这是 redis 出现了错误。 首先,检查我的 redis 的配置信息,如下代码所示: 据此可以看出,

    2024年02月09日
    浏览(39)
  • Session详解,学习Session,这篇文章就够了(包含底层分析和使用)

            说明:下面介绍session,我们使用到了游览器抓包,http的知识,如果不了解,请先简单了解下。http介绍,http请求,http响应。因为cookie和session是一对”好兄弟“,我们介绍session也要使用到cookie,如果不清楚cookie,请查看cookie详解。废话不多说,直接开始吧。     

    2024年02月03日
    浏览(35)
  • Hive on Spark中遇到的Failed to create Spark client for Spark session的问题

    在自学数仓项目中,遇到以下问题 错误提示: org.apache.hadoop.hive.ql.parse.SemanticException:Failed to get a spark session: org.apache.hadoop.hive.ql.metadata.HiveException: Failed to create Spark client for Spark session dfea1fc3-5634-44c1-8a11-55ec733ea206 导致出现这个问题主要是 Hive on Spark 的资源不足导致,还有一种可

    2024年02月03日
    浏览(40)
  • @Resource和@Autowired的区别

    @Resource和@Autowired这两个注解的作用都是在Spring生态里面去实现Bean的依赖注入 首先,@Autowired是Spring里面提供的一个注解,默认是根据类型来实现Bean的依赖注入。 @Autowired注解里面有一个required属性默认值是true,表示强制要求bean实例的注入,在应用启动的时候,如果IOC容器里

    2024年02月08日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包