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