Amazon云计算AWS之[3]简单存储对象S3

文章目录

  • S3的基本概念和操作
    • 对象
    • 基本操作
  • S3的数据一致性模型
    • 基知:CAP理论
    • S3的最终一致性
  • S3的安全措施
    • 身份认证(Authentication)
    • 访问控制列表(ACL)
      • 访问控制策略(ACP)
      • 授权用户类型

S3的基本概念和操作

  • 简单存储服务(Simple Storage Services,S3)构架在Dynamo之上,用于提供任意类型文件的临时或永久性存储。S3的总体设计目标是可靠、易用及低成本
  • S3存储系统的基本结构,涉及两个基本概念:桶(Bucket)和对象(Object)
    在这里插入图片描述

  • 桶是用于存储对象的容器,其作用类似于文件夹,但桶不可以被嵌套,即在桶中不能创建桶
  • Amazon限制每个用户创建桶的数量,但没有限制每个桶中对象的数量
  • 桶的名称要求在整个Amazon S3的服务器中是全局唯一的,避免在S3中数据共享时出现相互冲突的情况
  • 对桶命名,建议采用符合DNS要求的命名规则,以便与CloudFront等其他AWS服务配合使用。

通俗理解

  • 想一想真实世界中的水桶。每个水桶可以用来装水,你可以有很多水桶,每个水桶可以放在不同的地方,可以贴上不同的标签(例如“花园用水”、“厨房用水”等),并且每个水桶都有自己的容量限制。不过,在S3服务中,桶里装的不是水,而是数据。

  • 在Amazon S3这个“云存储服务”里,桶(Bucket)是用来装你所有文件(在这里称为对象或Object)的地方。你可以想象它们就像是电脑上的文件夹,不过这些“文件夹”可以无限大,可以存储任何量的数据。

  • 每个桶都有一个独一无二的名字,全球范围内都不能重复,这就像是你给你的桶贴上了一个全世界唯一的标签,确保你发给朋友的地址只指向你的桶,而不是别人的。此外,桶可以设置权限,决定谁可以看到桶里的内容,谁可以向桶里添加内容等。这就像给你的桶上了一把锁,你可以决定谁有钥匙。

对象

在这里插入图片描述

  • 对象是S3的基本存储单元,主要由数据和元数据组成。
  • 数据可以是任意类型,但大小受到对象最大容量的限制。
  • 元数据是数据内容的附加描述信息,通过名称-值(name-value)集合的形式来定义,可以是系统默认的元数据(System Metadata)或用户指定的自定义元数据(User Metadata)
元数据名称名称含义
last-modified对象被最后修改的时间
ETag利用MD5哈希算法得出的对象值
Content-Type对象的MIME(多功能网际邮件扩充协议)类型,默认二进制/八位组
Content-Length对象数据长度,以字节为单位
  • 每个对象在所在的桶中有唯一的键(key)。通过将桶名和键相结合的方式,可以标识每个对象
  • 键在对象创建后无法被更改,即重命名对于S3中的对象是无效的
  • S3中对象的存储在默认情况下是不进行版本控制的。但S3中提供了版本控制的功能,用于存档早期版本的对象或者防止对象被误删。版本控制只能对于桶内所有的对象启用,而无法具体对某个对象启用版本控制。当对某个桶启用版本控制后,桶内会出现键相同但版本号不同的对象,此时对象需要通过“桶名+键+版本号”的形式来唯一标识

基本操作

  • S3中支持对桶和对象的操作,主要包括:Get、Put、List、Delete和Head。
操作对象对象
Get获取桶中对象获取对象数据和元数据
Put创建或更新桶创建或更新对象
List列出桶中所有键——
Delete删除桶删除对象
Head——获取对象元数据

S3的数据一致性模型

基知:CAP理论

CAP定理,又称布鲁尔定理(Brewer’s theorem),指出分布式系统不可能同时满足以下三个基本保证中的超过两个:

  1. 一致性(Consistency):所有节点在同一时间具有相同的数据。
  2. 可用性(Availability):保证每个请求不管成功或者失败都有响应。
  3. 分区容忍性(Partition tolerance):系统在网络分区发生时,仍能继续运行。

对于Amazon S3这样的分布式系统,它设计上主要满足以下两个要素:

  • 可用性(Availability):S3确保在网络分区或其他故障时,用户的请求仍然可以被响应,尽管响应中的数据可能不是最新的。

  • 分区容忍性(Partition tolerance):S3能够处理网络分区,即使一部分节点无法通信,系统也能继续运作。数据会在内部进行复制,以确保当网络分区恢复后系统可以同步数据,达到最终一致性状态。

S3的最终一致性

  • S3中采用最终一致性模型
  • 在分布式系统中,一致性模型定义了系统中数据副本更新后可见性的规则和时限。
  • 一致性在S3中是最终一致性,而非强一致性。这意味着系统可能会在一段时间内出现数据不一致的情况,但最终会达到一致的状态。因此,S3的设计是为了在保证可用性和分区容忍性的前提下,通过最终一致性模型来尽可能提供一致性保证。

  • 在最终一致性模型下,如果没有新的更新操作,那么经过一段时间,所有的数据副本最终将会是一致的。换句话说,一个成功执行的写操作(如上传文件、修改文件)会在一段时间后对所有读操作(如获取文件)可见。

  • 在S3中上传或修改一个文件后,这些更改可能不会立即对所有用户可见。例如,一个用户可能会在上传文件几秒钟到几分钟后才能看到最新的文件版本。因为亚马逊的数据中心可能需要时间来传播和同步这些更改。

在这里插入图片描述

  • 在数据被充分传播到所有的存放节点之前,服务器返回给用户的仍是原数据,此时用户操作可能会出现如下情况。(了解)
用户操作结果
写入一个新的对象并立即读取服务器可能返回“键不存在”
写入一个新的对象并立即列出桶中已有的对象该对象可能不会出现在列表中
用新数据替换现有的对象并立即读取服务器可能返回原有的数据
删除现有的对象并立即读取服务器可能返回被删除的数据
删除现有的对象并立即列出桶中的所有对象服务器可能列出被删除的对象

S3的安全措施

在这里插入图片描述

  • 对于用户来说,系统的易用性是其考虑的一方面,但最终决定其是否使用S3服务的通常是S3的安全程度。
  • S3向用户提供包括身份认证(Authentication)和访问控制列表(ACL)的双重安全机制

身份认证(Authentication)

在这里插入图片描述

  • S3中使用基于HMAC-SHA1的数字签名方式来确定用户身份。HMAC-SHA1是一种安全的基于加密Hash函数和共享密钥的消息认证协议,它可以有效地防止数据在传输过程中被截获和篡改,维护数据的完整性、可靠性和安全性

  • HMAC-SHA1消息认证机制的成功在于一个加密的Hash函数、一个加密的随机密钥和一个安全的密钥交换机制

  • 在新用户注册时,Amazon给每个用户分配一个Access Key ID和一个Secret Access Key。

    • Access Key ID是一个20位的由字母和数字组成的串,用来确定服务请求的发送者
    • Secret Access Key是一个40位的字符串,参与数字签名过程,用来证明用户是发送服务请求的账户的合法拥有者。

  • S3数字签名具体实现过程
    在这里插入图片描述
  1. S3用户首先发出服务请求,系统会自动生成一个服务请求字符串。
  2. HMAC函数负责计算用户的服务请求字符串和Secret Access Key生成的数字签名,并将这个签名和服务请求字符串一起传给S3服务器。
  3. 服务器接收到信息后会从中分离出用户的AccessKey ID,通过查询S3数据库得到用户的Secret Access Key
  4. 利用和上面相同的过程生成一个数字签名,然后和用户发送的数字签名做比对,相同则通过验证,反之拒绝。

访问控制列表(ACL)

  • 访问控制列表(Access Control Policy)是S3提供的可供用户自行定义的访问控制策略列表。

访问控制策略(ACP)

  • S3的访问控制策略(Access Control Policy,ACP)提供如下五种访问权限。
    在这里插入图片描述
  • 注意:WRITE_ACP具有覆写对象和桶的ACP权限,所以可以通过覆写简介获得read、write、read_acp等权限。
  • 注意S3的ACL不具有继承性: 桶和对象的 A C L 各自独立 桶和对象的ACL各自独立 桶和对象的ACL各自独立,对桶有某种访问权限不代表对桶中的对象也具有相同的权限

授权用户类型

  • S3中有三大类型的授权用户,分别是所有者(Owner)、个人授权用户(User)和组授权用户(Group)

  • 所有者(Owner):桶或对象的创建者, 默认具是 W R I T E _ A C P 权限 默认具是WRITE\_ACP权限 默认具是WRITE_ACP权限。所有者本身也要服从ACL,如果该所有者没有 R E A D _ A C P READ\_ACP READ_ACP,则无法读取ACL。但是所有者可以通过覆写相应桶或对象的ACP获取想要的权限,从这个意义上来说,所有者默认就是最高权限拥有者

  • 个人授权用户(User):两种授权方式,一种是通过电子邮件地址授权的用户,另一种是通过用户ID进行授权。后
    一种方式比较麻烦,因为ID是一个不规则的字符串,用户在授权的过程中容易出错。电子邮件地址方式授权的方法最终还是在S3服务器内部转换成相应的用户ID进行授权。

  • 组授权用户(Group):一种是AWS用户组,它将授权分发给所有AWS账户拥有者;另一种是所有用户组(允许匿名访问,有潜在危险,不建议使用)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2980901.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【笔试强训】数字统计|两个数组的交集|点击消除

一、数字统计 链接:[NOIP2010]数字统计_牛客题霸_牛客网 (nowcoder.com) 思路: 枚举数字拆分(模10 除10) 💡 当前数据范围为10^4可以用int类型解决,如果到了10^9就需要用long类型 代码实现: i…

LayuiMini使用时候初始化模板修改(下载源码)

忘记加了 下载 地址 : layui-mini: layuimini,后台admin前端模板,基于 layui 编写的最简洁、易用的后台框架模板。只需提供一个接口就直接初始化整个框架,无需复杂操作。 LayuiMini使用时候初始化模板官网给的是: layu…

jvm知识点总结(一)

JVM的跨平台 java程序一次编写到处运行。java文件编译生成字节码,jvm将字节码翻译成不同平台的机器码。 JVM的语言无关性 JVM只是识别字节码,和语言是解耦的,很多语言只要编译成字节码,符合规范,就能在JVM里运行&am…

优化器与优化策略的搭配

在深度学习中不同的optimizer 通常会选择不同 优化策略 lr_sheduler 与之搭配; 1. SGD 与 Adam 优化器 Adam 与经典 SGD 的不同之处在于, Adam 执行局部参数更新(即在参数级别进行更改),而不是全局执行此操作的 SGD…

《MATLAB科研绘图与学术图表绘制从入门到精通》示例:绘制太阳黑子区域分布极坐标散点图

下面是一个示例,演示如何使用MATLAB绘制太阳黑子区域分布的极坐标散点图。在这个示例中,我们使用了数据集sunspotarea.csv的太阳黑子区域数据,来绘制极坐标散点图。 购书地址:https://item.jd.com/14102657.html

一不小心,创业5年了。。。

时间过得太快。2019年的春天,小灰毅然选择离开职场,选择了自媒体创业这条道路。时至今日,已经有整整5年了。 很多朋友问小灰,为什么要选择离开职场去创业呢?原因主要有两个: 第一,小灰是一个喜欢…

小程序 rich-text 解析富文本 图片过大时如何自适应?

在微信小程序中&#xff0c;用rich-text 解析后端返回的数据&#xff0c;当图片尺寸太大时&#xff0c;会溢出屏幕&#xff0c;导致横向出现滚动 查看富文本代码 图片是用 <img 标签&#xff0c;所以写个正则匹配一下图片标签&#xff0c;手动加上样式即可 // content 为后…

easyx库的学习(鼠标信息)

前言 本次博客是作为介绍easyx库的使用&#xff0c;最好是直接代码打到底&#xff0c;然后看效果即可 代码 int main() {initgraph(640, 480, EX_SHOWCONSOLE|EX_DBLCLKS);setbkcolor(RGB(231, 114, 227));cleardevice();//定义消息结构体ExMessage msg { 0 };//获取消息wh…

6.2 整合MongoDB

6.2 整合MongoDB 1. MongoDB简介2. MongoDB安装2.1 下载2.2 配置MongoDB2.3 MongoDB的启动和关闭1. 启动MongoDB2. 关闭MogoDB 2.4 安全管理 3. 整合SpringBoot3.1 依赖3.2 MongoTemplate使用3.3 测试1. 新增2. 查询3. 删除 *************************************************…

每天学习一个Linux命令之stat

每天学习一个Linux命令之stat 简介 在Linux系统中&#xff0c;stat命令用于显示文件的详细信息&#xff0c;包括文件的设备号、文件类型、权限、链接数、所有者、组、大小、时间戳等。stat命令是一个非常常用的命令&#xff0c;能够帮助我们了解文件的属性和状态。本篇博客将介…

uniapp 引用组件后 不起作用 无效果 不显示

根据uniapp官方文档easycom组件规范 只要组件安装在项目的components目录下或uni_modules目录下&#xff0c;并符合components/组件名称/组件名称.(vue|uvue)目录结构&#xff08;注意&#xff1a;当同时存在vue和uvue时&#xff0c;uni-app 项目优先使用 vue 文件&#xff0c;…

用于割草机器人,商用服务型机器人的陀螺仪

介绍一款EPSON推出适用于割草机器人&#xff0c;商用服务型机器人的高精度陀螺仪模组GGPM61&#xff0c;具体型号为GGPM61-C01。模组GGPM61是一款基于QMEMS传感器的低成本航向角输出的传感器模组&#xff0c;它可以输出加速度、角速度及姿态角等信息&#xff0c;为控制机器人运…

【目标检测】FPN特征金字塔完整流程详解

学习视频&#xff1a;1.1.2 FPN结构详解 对比 可以看到FPN是自上而下、自下而上并且可以进行多尺度特征融合的的层级结构。 具体结构 1x1 conv: 对通道数进行调整&#xff0c;不同大小的特征图通道数不同&#xff0c;越高层次的特征图通道数越大&#xff0c;论文中使用256个1…

在 Windows 系统上彻底卸载 TeamViewer 软件

在 Windows 系统上彻底卸载 TeamViewer 软件 References 免费版仅供个人使用 您的会话将在 5 分钟后终止 Close TeamViewer by locating the TeamViewer icon in the system tray, right click and “Exit TeamViewer”. Right click Windows start menu then Control Panel -…

[Linux][多线程][三][条件变量][生产者消费者模型][基于BlockingQueue的生产者消费者模型]详细讲解

目录 1.线程同步1.同步概念与竞态条件2.条件变量 2.条件变量函数1.初始化 -- pthread_cond_init()2.销毁 -- pthread_cond_destroy()3.等待条件变量 -- pthread_cond_wait()4.唤醒等待5.为什么pthread_cond_wait()需要互斥量&#xff1f;6.错误的程序设计7.条件变量使用规范 3.…

2024 OceanBase 开发者大会:OceanBase 4.3正式发布,打造PB级实时分析数据库

4月20日&#xff0c;2024 OceanBase开发者大会盛大召开&#xff0c;吸引了50余位业界知名的数据库专家和爱好者&#xff0c;以及来自全国各地的近600名开发者齐聚一堂。他们围绕一体化、多模、TP与AP融合等前沿技术趋势展开深入讨论&#xff0c;分享场景探索的经验和最佳实践&a…

金融风控信用评分卡建模(Kaggle give me credit数据集)

1 数据预处理数据 数据来源于Kaggle的Give Me Some Credit&#xff0c;包括25万条个人财务情况的样本数据 1.1 导包读数据 import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.ensemble import RandomForestRegressor import seaborn as …

换脸插件升级导致SDWebUI无法启动cannot import name ‘Undefined‘ from ‘pydantic.fields‘

今天在一台新的机器环境装了SDWEBUI&#xff0c;都使用最新的版本&#xff0c;升级了下换脸的插件&#xff0c;于是乎启动崩溃了。错误如下 Launching Web UI with arguments: --listen --skip-torch-cuda-test --disable-nan-check --skip-version-check --skip-python-versi…

C++信息学奥赛 数据结构认识

数据结构 1.1数据结构分类 1.2基本数据类型 1.3数字编码 1.4字符编码 1.1数据结构分类 数据结构如同一副稳固而多样的框架。为数据的有序组织提供了蓝图&#xff0c;算法得以在此基础上生动起来。 常用的数据结构包括哪些 &#xff0c; &#xff0c; &…

Django中的事务

1 开启全局的事务 DATABASES {default: {ENGINE: django.db.backends.mysql, # 使用mysql数据库NAME: tracerbackend, # 要连接的数据库USER: root, # 链接数据库的用于名PASSWORD: 123456, # 链接数据库的用于名HOST: 192.168.1.200, # mysql服务监听的ipPORT: 3306, …