OSS: Object Storage Service
初次接觸之控制臺操作
開通
40g/年 9塊錢創(chuàng)建存儲空間
存儲空間(Bucket)
存儲空間是您用于存儲對象(Object)的容器卿城,所有的對象都必須隸屬于某個存儲空間悲立。您可以設(shè)置和修改存儲空間屬性用來控制地域募逞、訪問權(quán)限肢专、生命周期等诞仓,這些屬性設(shè)置直接作用于該存儲空間內(nèi)所有對象,因此您可以通過靈活創(chuàng)建不同的存儲空間來完成不同的管理功能逊移。
同一個存儲空間的內(nèi)部是扁平的逻翁,沒有文件系統(tǒng)的目錄等概念,所有的對象都直接隸屬于其對應(yīng)的存儲空間氧急。
每個用戶可以擁有多個存儲空間颗胡。
存儲空間的名稱在 OSS 范圍內(nèi)必須是全局唯一的,一旦創(chuàng)建之后無法修改名稱吩坝。
存儲空間內(nèi)部的對象數(shù)目沒有限制毒姨。
存儲空間的命名規(guī)范如下:
只能包括小寫字母、數(shù)字和短橫線(-)钉寝。
必須以小寫字母或者數(shù)字開頭和結(jié)尾弧呐。
長度必須在3-63字節(jié)之間。
基本名詞解釋
沒有子目錄的一個空間瘩蚪,所有存儲對象直接放在里面泉懦。
基本配置:
bucketName: damon4bucket
權(quán)限: 公共讀
OSS外網(wǎng)域名: damon4bucket.oss-cn-shanghai.aliyuncs.com OSS內(nèi)網(wǎng)域名:damon4bucket.oss-cn-shanghai-internal.aliyuncs.com
其他配置暫時不理
上傳文件
您已經(jīng)創(chuàng)建了存儲空間稿黍,現(xiàn)在您可以上傳任意類型文件到存儲空間中疹瘦。通過 OSS 控制臺您可以上傳小于500MB 的文件。如您要上傳的文件大于500MB巡球,請參閱 阿里云 OSS 開發(fā)人員指南 中的對應(yīng)章節(jié)言沐。
文件分享
創(chuàng)建后得到的文件地址如下:
http://damon4bucket.oss-cn-shanghai.aliyuncs.com/www.cr173.com001.jpg
可以綁定自定義域名,暫不理
刪除對象文件和刪除bucket
控制臺操作都是傻瓜式操作酣栈,不作過多解釋险胰。
客戶端一覽
開發(fā)者指南
不是文件系統(tǒng),所以注意文件名矿筝,如果重復(fù)那么就會被覆蓋起便。
訪問oss:
帶身份驗(yàn)證的訪問
- 使用控制臺訪問OSS:控制臺中對用戶隱藏了身份驗(yàn)證的細(xì)節(jié),使用控制臺訪問OSS的用戶無需關(guān)注細(xì)節(jié)窖维。
- 使用SDK訪問OSS:OSS提供了多種開發(fā)語言的SDK榆综,SDK中實(shí)現(xiàn)了簽名算法,只需要將AK信息作為參數(shù)輸入即可铸史。
- 根據(jù)API訪問OSS:如果您想用自己喜歡的語言來封裝調(diào)用RESTful API接口鼻疮,您需要實(shí)現(xiàn)簽名算法來計(jì)算簽名。具體的簽名算法可以參考API手冊中的 在Header中包含簽名 和 在URL中包含簽名琳轿。
接下來需要使用nodejs的sdk接入判沟,首先了解下訪問控制
訪問控制和AccessKey
訪問控制入口在管理控制臺右上角用戶頭像下的dropbox中
有三種訪問控制
- AccessKey 完全訪問權(quán)限
- RAM (Resource Access Management) 最佳實(shí)踐
- STS (Security Token Service) 臨時訪問控制
因?yàn)楣局暗暮蠖烁鐐兪褂昧薃K操作耿芹, 那么根據(jù)手頭上的項(xiàng)目,我首先使用AccessKey來操作挪哄。
AccessKeyId: xxxxxxxxx... => length = 16
AccessKeySecret: xxxxxxxxxxxxxx..... => length = 30
請謹(jǐn)慎使用AK訪問吧秕!
- 跨域訪問
需求: 用戶上傳文件
oss地址 your_server地址
由于跨域限制,用戶只能向your_server上傳迹炼,然后通過your_server中轉(zhuǎn)到oss
原理:
(http三次握手中建立)
用戶訪問請求頭帶有origin:your_server => 1
訪問的目標(biāo)服務(wù)器(oss服務(wù)器)返回頭帶有: Access-Control-Allow-Origin: your_server / * => 2
如果返回的結(jié)果是不能訪問寇甸,那么瀏覽器就會攔截請求 => 3(握手成功或者失敗)
使用跨域請求的時候需要關(guān)注瀏覽器是否開啟了Cache功能。當(dāng)運(yùn)行在同一個瀏覽器上分別來源于www.a.com和www.b.com的兩個頁面都同時請求同一個跨域資源的時候疗涉,如果www.a.com的請求先到達(dá)服務(wù)器拿霉,服務(wù)器將資源帶上Access-Control-Allow-Origin的Header為www.a.com返回給用戶。這個時候www.b.com又發(fā)起了請求咱扣,瀏覽器會將Cache的上一次請求返回給用戶绽淘,此時Header的內(nèi)容和CORS的要求不匹配,就會導(dǎo)致后面的請求失敗闹伪。
設(shè)置跨域資源共享
用戶直接上傳資源到oss沪铭,不用經(jīng)過oss,但是必須通過STS給予臨時訪問權(quán)限偏瓤,否則會有惡意上傳的問題
先設(shè)置好跨域資源共享
使用sdk訪問
當(dāng)用戶以個人身份向OSS發(fā)送請求時杀怠,其身份驗(yàn)證的實(shí)現(xiàn)如下:
1. 用戶將發(fā)送的請求按照OSS指定的格式生成簽名字符串。
2. 用戶使用AccessKeySecret對簽名字符串進(jìn)行加密產(chǎn)生驗(yàn)證碼厅克。
3. OSS收到請求以后赔退,通過AccessKeyId找到對應(yīng)的AccessKeySecret,以同樣的方法提取簽名字符串和驗(yàn)證碼证舟。
4. 如果計(jì)算出來的驗(yàn)證碼和提供的一樣即認(rèn)為該請求是有效的硕旗。
否則,OSS將拒絕處理這次請求女责,并返回HTTP 403錯誤漆枚。
對于用戶來說可以直接使用OSS提供的SDK,配合不同類型的AccessKey即可實(shí)現(xiàn)不同的身份驗(yàn)證抵知。
基于OSS的移動開發(fā)
基本架構(gòu)分為兩種(以用戶和OSS交互需要的認(rèn)證方式分類)
- 基于RAM和TST的授權(quán)方案
- 基于AccessKey的URL憑證方案
AK方式的上傳
1. 客戶端向應(yīng)用服務(wù)器發(fā)出上傳文件到OSS的請求墙基。
2. 應(yīng)用服務(wù)器回復(fù)客戶端,將上傳憑證(簽名URL或者表單)返回給客戶端刷喜。
3. 客戶端獲取上傳到OSS的授權(quán)(簽名URL或者表單)残制,調(diào)用OSS提供的移動端SDK上傳或者直接表單上傳。
4. 客戶端成功上傳數(shù)據(jù)到OSS吱肌。如果沒有設(shè)置回調(diào)痘拆,則流程結(jié)束。如果設(shè)置了回調(diào)功能氮墨,OSS會調(diào)用相關(guān)的接口纺蛆。
AK方式的下載
1. 客戶端向應(yīng)用服務(wù)器發(fā)出下載OSS文件的請求吐葵。
2. 應(yīng)用服務(wù)器回復(fù)客戶端,將簽名URL返回給客戶端桥氏。
3. 客戶端獲取下載OSS文件的授權(quán)(簽名URL)温峭,調(diào)用OSS提供的移動端SDK下載。
4. 客戶端成功從OSS下載文件字支。
最佳實(shí)踐是通過RAM實(shí)現(xiàn)
實(shí)現(xiàn)文件上傳
主要看第三方上傳(就是客戶端直接上傳至OSS凤藏,不需要中間服務(wù)器)
可以使用OSS搭建靜態(tài)網(wǎng)站,只要在bucket屬性設(shè)置中的靜態(tài)頁面設(shè)置入口頁面的文件名就可以了
堕伪。揖庄。。欠雌。蹄梢。。富俄。禁炒。。霍比。幕袱。。悠瞬。们豌。。阁危。玛痊。。狂打。。混弥。趴乡。。蝗拿。晾捏。。哀托。惦辛。。
本來想把文件上傳做好的仓手,但是回調(diào)的驗(yàn)證還是沒有搞通過胖齐。明天再整理整理玻淑。