【网络】什么是S3 协议和产生背景

目录

简要

详细

背景

产生

如何使用

扩展知识

Amazon S3是什么?

 


简要

S3 协议:

对象存储协议

产生:

Amazon Simple Storage Service (简称 Amazon S3) 是一个公开的云存储服务,Web 应用程序开发人员可以使用它存储数字资产,包括图片、视频、音乐和文档。S3 提供一个 RESTful API 以编程方式实现与该服务的交互。

Amazon 是最早提供对象存储服务 的厂商,制定文件存储相关的业内标准,推出S3协议标准

目前市面上主流的存储厂商都支持S3协议接口,比如华为、华三、戴尔、元核云等。

链接:https://www.zhihu.com/question/343713732/answer/809092629
 

详细

 

背景

 

在互联网发展的今天,近乎所有的云厂商都提供「对象存储服务」。一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。

没有S3之前,使用某个厂商的云产品时,我们需要引如对应厂商的SDK,用他们的接口访问该厂商的云。

如下提供了几家厂商接口 SDK 上传实例:

阿里云

//Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";String accessKeyId = "";String accessKeySecret = "";// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);// 创建PutObjectRequest对象。String content = "Hello OSS";PutObjectRequest putObjectRequest = new PutObjectRequest("", "", new ByteArrayInputStream(content.getBytes()));// 上传字符串。ossClient.putObject(putObjectRequest);// 关闭OSSClient。ossClient.shutdown();

华为云

String endPoint = "https://your-endpoint";String ak = "*** Provide your Access Key ***";String sk = "*** Provide your Secret Key ***";// 创建ObsClient实例ObsClient obsClient = new ObsClient(ak, sk, endPoint);obsClient.putObject("bucketname", "objectname", new File("localfile")); // localfile为待上传的本地文件路径,需要指定到具体的文件名

七牛云

Configuration cfg = new Configuration(Region.region0());UploadManager uploadManager = new UploadManager(cfg);String accessKey = "your access key";String secretKey = "your secret key";String localFilePath = "/home/qiniu/test.png";String key = null;Auth auth = Auth.create(accessKey, secretKey);String upToken = auth.uploadToken(bucket);Response response = uploadManager.put(localFilePath, key, upToken);

 

当我们同时接入的云厂商较多时,管理和接口水平迁移就会要很大的麻烦。所以需要统一的一个标准规范所有厂商,以解决这个问题。

 

产生

解决方案:Amazon S3 协议


Amazon 是最早提供对象存储服务 的厂商,制定文件存储相关的业内标准,这意味着只需要实现 S3 协议即可接入兼容此协议的文件存储厂商和中间件。当然 S3 协议不仅仅是技术实现要求标准,对于可用性等都有具体的要求。

就这样S3协议诞生了。

 

兼容 S3 协议国内云厂商

839e7160bb1eec9a765383829854c9a6.png

 

如何使用

  • 引入依赖。引入此依赖,无需在引入云厂商 SDK
    com.pig4cloud.plugin    oss-spring-boot-starter    0.0.1
  • 配置文件存储
oss:  path-style-access: false    #请求路径是否 XXX/{bucketName}  endpoint: s3-cn-east-1.qiniucs.com  access-key: xxx    # 云厂商提供的key  secret-key: xxx    # 云厂商提供的密钥  bucketName: pig4cloud     # 上文创建的桶名称
  • 操作
@Autowireprivate final OssTemplate ossTemplate;ossTemplate.putObject(CommonConstants.BUCKET_NAME, fileName, file.getInputStream());

参考:

《aws s3 bucket下 创建文件夹_S3文件存储协议的Spring Boot如何实现》

https://blog.csdn.net/weixin_39680609/article/details/112127468?spm=1001.2014.3001.5502

扩展知识

Amazon S3是什么?

1.S3概念

Simple Storage Service(s3),简单存储服务,是一个公开的云存储服务,Web 应用程序开发人员可以使用它存储数字资产,包括图片、视频、音乐和文档。S3 提供一个 RESTful API 以编程方式实现与该服务的交互。,目前市面上主流的存储厂商都支持S3协议接口,比如华为、华三、戴尔、元核云等。

Amazon S3 提供了一个简单 Web 服务接口,可用于随时在 Web 上的任何位置存储和检索任何数量的数据。此服务让所有开发人员都能访问同一个具备高扩展性、可靠性、安全性和快速价廉的数据存储基础设施。

简单地说,S3的作用就是做数据存储。

2.S3主要分类

S3的数据存储结构分为两层,第一层为Bucket,第二层为Object。

3.何为Bucket?何为Object

Object存储于Bucket中。S3可以创建多个Bucket,每个Bucket中可以存储多个Object。所以说Bucket就像文件夹,而Object更像文件中的文件。而亚马逊的S3中的Bucket是不允许有Bucket,不过可以用Object来模拟多级目录这种。



链接:https://www.zhihu.com/question/343713732/answer/1443277985
 

posted on 2022-10-04 01:23  bdy  阅读(374)  评论(0编辑  收藏  举报

导航