目錄
簡要
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 協議國內雲廠商
如何使用
- 引入依賴。引入此依賴,無需在引入雲廠商 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