什么是對象存儲 OSS
阿里云對象存儲服務(wù)(Object Storage Service,簡稱 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存儲服務(wù)。其數(shù)據(jù)設(shè)計持久性不低于 99.9999999999%(12 個 9),服務(wù)設(shè)計可用性(或業(yè)務(wù)連續(xù)性)不低于 99.995%。
OSS 具有與平臺無關(guān)的 RESTful API 接口,您可以在任何應(yīng)用、任何時間、任何地點存儲和訪問任意類型的數(shù)據(jù)。
您可以使用阿里云提供的 API、SDK 接口或者 OSS 遷移工具輕松地將海量數(shù)據(jù)移入或移出阿里云 OSS。數(shù)據(jù)存儲到阿里云 OSS 以后,您可以選擇標準存儲(Standard)作為移動應(yīng)用、大型網(wǎng)站、圖片分享或熱點音視頻的主要存儲方式,也可以選擇成本更低、存儲期限更長的低頻訪問存儲(Infrequent Access)和歸檔存儲(Archive)作為不經(jīng)常訪問數(shù)據(jù)的存儲方式。
相關(guān)概念
存儲類型(Storage Class)
OSS 提供標準、低頻訪問、歸檔三種存儲類型,全面覆蓋從熱到冷的各種數(shù)據(jù)存儲場景。其中標準存儲類型提供高可靠、高可用、高性能的對象存儲服務(wù),能夠支持頻繁的數(shù)據(jù)訪問;低頻訪問存儲類型適合長期保存不經(jīng)常訪問的數(shù)據(jù)(平均每月訪問頻率 1 到 2 次),存儲單價低于標準類型;歸檔存儲類型適合需要長期保存(建議半年以上)的歸檔數(shù)據(jù),在三種存儲類型中單價最低。詳情請參見存儲類型介紹。
存儲空間(Bucket)
存儲空間是您用于存儲對象(Object)的容器,所有的對象都必須隸屬于某個存儲空間。存儲空間具有各種配置屬性,包括地域、訪問權(quán)限、存儲類型等。您可以根據(jù)實際需求,創(chuàng)建不同類型的存儲空間來存儲不同的數(shù)據(jù)。創(chuàng)建存儲空間請參見創(chuàng)建存儲空間。
對象/文件(Object)
對象是 OSS 存儲數(shù)據(jù)的基本單元,也被稱為 OSS 的文件。對象由元信息(Object Meta)、用戶數(shù)據(jù)(Data)和文件名(Key)組成。對象由存儲空間內(nèi)部唯一的 Key 來標識。對象元信息是一組鍵值對,表示了對象的一些屬性,例如最后修改時間、大小等信息,同時您也可以在元信息中存儲一些自定義的信息。
地域(Region)
地域表示 OSS 的數(shù)據(jù)中心所在物理位置。您可以根據(jù)費用、請求來源等選擇合適的地域創(chuàng)建 Bucket。詳情請參見 OSS 已開通的Region。
訪問域名(Endpoint)
Endpoint 表示 OSS 對外服務(wù)的訪問域名。OSS 以 HTTP RESTful API 的形式對外提供服務(wù),當訪問不同地域的時候,需要不同的域名。通過內(nèi)網(wǎng)和外網(wǎng)訪問同一個地域所需要的域名也是不同的。具體的內(nèi)容請參見各個 Region 對應(yīng)的 Endpoint。
訪問密鑰(AccessKey)
AccessKey(簡稱 AK)指的是訪問身份驗證中用到的 AccessKeyId 和 AccessKeySecret。OSS 通過使用 AccessKeyId 和 AccessKeySecret 對稱加密的方法來驗證某個請求的發(fā)送者身份。AccessKeyId 用于標識用戶;AccessKeySecret 是用戶用于加密簽名字符串和 OSS 用來驗證簽名字符串的密鑰,必須保密。獲取 AccessKey 的方法請參見創(chuàng)建 AccessKey。
相關(guān)服務(wù)
您把數(shù)據(jù)存儲到 OSS 以后,就可以使用阿里云提供的其他產(chǎn)品和服務(wù)對其進行相關(guān)操作。
以下是您會經(jīng)常使用到的阿里云產(chǎn)品和服務(wù):
圖片處理(IMG):對存儲在 OSS 上的圖片進行格式轉(zhuǎn)換、縮放、裁剪、旋轉(zhuǎn)、添加水印等各種操作。請參見快速使用 OSS 圖片處理服務(wù)。
云服務(wù)器(ECS):提供簡單高效、處理能力可彈性伸縮的云端計算服務(wù)。請參見 ECS 產(chǎn)品詳情頁面。
內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN):將 OSS 資源緩存到各區(qū)域的邊緣節(jié)點,利用邊緣節(jié)點緩存的數(shù)據(jù),提升同一個文件,被邊緣節(jié)點客戶大量重復(fù)下載的體驗。請參見 CDN 產(chǎn)品詳情頁面。
E-MapReduce:構(gòu)建于 ECS 上的大數(shù)據(jù)處理的系統(tǒng)解決方案,基于開源的 Apache Hadoop 和 Apache Spark,方便您分析和處理自己的數(shù)據(jù)。請參見 E-MapReduce 產(chǎn)品詳情頁面。
媒體處理:將存儲于 OSS 的音視頻轉(zhuǎn)碼成適合在 PC、TV 以及移動終端上播放的格式。并基于海量數(shù)據(jù)深度學習,對音視頻的內(nèi)容、文字、語音、場景多模態(tài)分析,實現(xiàn)智能審核、內(nèi)容理解、智能編輯。請參見媒體處理產(chǎn)品詳情頁面。
管理 OSS
通過 OSS 控制臺管理 OSS
OSS 提供了 Web 服務(wù)頁面,您可以登錄 OSS 管理控制臺,管理您的 OSS。詳情請參見控制臺用戶指南。
通過 API 或 SDK 管理 OSS
OSS 提供 RESTful API 和各種語言的 SDK 開發(fā)包,方便您快速進行二次開發(fā)。詳情請參見 OSS API 參考和 OSS SDK 參考。
通過工具管理 OSS
OSS 提供各類型的管理工具,您可以通過工具管理您的 OSS。詳情請參見 OSS 常用工具。
基本概念
存儲空間(Bucket)
存儲空間是用戶用于存儲對象(Object)的容器,所有的對象都必須隸屬于某個存儲空間。存儲空間具有各種配置屬性,包括地域、訪問權(quán)限、存儲類型等。用戶可以根據(jù)實際需求,創(chuàng)建不同類型的存儲空間來存儲不同的數(shù)據(jù)。
同一個存儲空間的內(nèi)部是扁平的,沒有文件系統(tǒng)的目錄等概念,所有的對象都直接隸屬于其對應(yīng)的存儲空間。
每個用戶可以擁有多個存儲空間。
存儲空間的名稱在 OSS 范圍內(nèi)必須是全局唯一的,一旦創(chuàng)建之后無法修改名稱。
存儲空間內(nèi)部的對象數(shù)目沒有限制。
存儲空間的命名規(guī)范如下:
只能包括小寫字母、數(shù)字和短橫線(-)。
必須以小寫字母或者數(shù)字開頭和結(jié)尾。
長度必須在 3–63 字節(jié)之間。
對象/文件(Object)
對象是 OSS 存儲數(shù)據(jù)的基本單元,也被稱為 OSS 的文件。對象由元信息(Object Meta),用戶數(shù)據(jù)(Data)和文件名(Key)組成。對象由存儲空間內(nèi)部唯一的 Key 來標識。對象元信息是一組鍵值對,表示了對象的一些屬性,比如最后修改時間、大小等信息,同時用戶也可以在元信息中存儲一些自定義的信息。
對象的生命周期是從上傳成功到被刪除為止。在整個生命周期內(nèi),只有通過追加上傳的 Object 可以繼續(xù)通過追加上傳寫入數(shù)據(jù),其他上傳方式上傳的 Object 內(nèi)容無法編輯,您可以通過重復(fù)上傳同名的對象來覆蓋之前的對象。
對象的命名規(guī)范如下:
使用 UTF-8 編碼。
長度必須在 1–1023 字節(jié)之間。
不能以正斜線(/)或者反斜線(\)開頭。
說明 對象名稱需要區(qū)分大小寫。如無特殊說明,本文檔中的對象、文件稱謂等同于 Object。
Region(地域)
Region 表示 OSS 的數(shù)據(jù)中心所在物理位置。用戶可以根據(jù)費用、請求來源等選擇合適的地域創(chuàng)建 Bucket。一般來說,距離用戶更近的 Region 訪問速度更快。詳情請查看 OSS 已經(jīng)開通的 Region。
Region 是在創(chuàng)建 Bucket 的時候指定的,一旦指定之后就不允許更改。該 Bucket 下所有的 Object 都存儲在對應(yīng)的數(shù)據(jù)中心,目前不支持 Object 級別的 Region 設(shè)置。
Endpoint(訪問域名)
Endpoint 表示 OSS 對外服務(wù)的訪問域名。OSS 以 HTTP RESTful API 的形式對外提供服務(wù),當訪問不同的 Region 的時候,需要不同的域名。通過內(nèi)網(wǎng)和外網(wǎng)訪問同一個 Region 所需要的 Endpoint 也是不同的。例如杭州 Region 的外網(wǎng) Endpoint 是 oss-cn-hangzhou.aliyuncs.com,內(nèi)網(wǎng) Endpoint 是 oss-cn-hangzhou-internal.aliyuncs.com。具體的內(nèi)容請參見各個 Region 對應(yīng)的 Endpoint。
AccessKey(訪問密鑰)
AccessKey(簡稱 AK)指的是訪問身份驗證中用到的 AccessKeyId 和 AccessKeySecret。OSS 通過使用 AccessKeyId 和 AccessKeySecret 對稱加密的方法來驗證某個請求的發(fā)送者身份。AccessKeyId 用于標識用戶;AccessKeySecret 是用戶用于加密簽名字符串和 OSS 用來驗證簽名字符串的密鑰,必須保密。對于 OSS 來說,AccessKey 的來源有:
Bucket 的擁有者申請的 AccessKey。
被 Bucket 的擁有者通過 RAM 授權(quán)給第三方請求者的 AccessKey。
被 Bucket 的擁有者通過 STS 授權(quán)給第三方請求者的 AccessKey。
創(chuàng)建OSS
創(chuàng)建子用戶
原生SDK上傳
@Test
void upload() {
// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里云主賬號AccessKey擁有所有API的訪問權(quán)限,風險很高。強烈建議您創(chuàng)建并使用RAM賬號進行API訪問或日常運維,請登錄 https://ram.console.aliyun.com 創(chuàng)建RAM賬號。
String accessKeyId = "LTAI4FzQD4543kCervA5vy";
String accessKeySecret = "wmCFWidrtvJK08ZvAIukf0OexyGRZ";
// 創(chuàng)建OSSClient實例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 創(chuàng)建PutObjectRequest對象。
String content = "C:\\Users\\asus\\Desktop\\node-disk-manager-amd64.tar";
// <yourObjectName>表示上傳文件到OSS時需要指定包含文件后綴在內(nèi)的完整路徑,例如abc/efg/123.jpg。
PutObjectRequest putObjectRequest = new PutObjectRequest("gulimall-dalianpai", "k8s.tar", new ByteArrayInputStream(content.getBytes()));
// 如果需要上傳時設(shè)置存儲類型與訪問權(quán)限,請參考以下示例代碼。
// ObjectMetadata metadata = new ObjectMetadata();
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
// metadata.setObjectAcl(CannedAccessControlList.Private);
// putObjectRequest.setMetadata(metadata);
// 上傳字符串。
ossClient.putObject(putObjectRequest);
// 關(guān)閉OSSClient。
ossClient.shutdown();
}
與SpringCloud整合上傳,注意這個官網(wǎng)API,我在上傳的時候,流會被截斷,上傳的不完整。
spring:
application:
name: gulimall-product
cloud:
nacos:
discovery:
server-addr: 192.168.1.118:8848
config:
server-addr: 192.168.1.118:8848
namespace: 1a99a442-e66b-4fa6-8da7-e08cab3727de
group: dev
file-extension: yaml
alicloud:
access-key: LTAI4Fz32kWpSNkCervA5vy
secret-key: wmCFWidt8YvJK32vAIukf0OexyGRZ
oss:
endpoint: oss-cn-beijing.aliyuncs.com
@Test
void upload2() throws FileNotFoundException {
// 創(chuàng)建PutObjectRequest對象。
InputStream fileInputStream = new FileInputStream("C:\\Users\\asus\\Desktop\\榮哥v1.docx");
ossClient.putObject("gulimall-dalianpai-oss", "榮哥v1.docx",fileInputStream);
ossClient.shutdown();
System.out.println("上傳成功");
}
版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/qq_29860591/article/details/106417565