通過應用開發(fā)環(huán)境與OBS(Object-based Storage Service)對接,實現(xiàn)對象或者Widget資產(chǎn)存儲功能。
背景信息
對象存儲服務(Object-based Storage Service,OBS)是一個基于對象的海量存儲服務,為客戶提供海量、安全、高可靠、低成本的數(shù)據(jù)存儲能力,包括:創(chuàng)建、修改、刪除桶,上傳、下載、刪除對象等。
在配置S3存儲功能章節(jié)我們介紹過如何對接Amazon S3,本節(jié)將介紹如何對接OBS。
兩者相同點如下:
- 兩者對接的應用場景相同,都是為了實現(xiàn)對象或者Widget資產(chǎn)等的存儲功能。
- 兩者在應用開發(fā)環(huán)境上如何配置Connector的操作步驟相似。
兩者差異點如下:
- 在對接Amazon S3時,您可以在Flow中調(diào)用Connector實現(xiàn)對接。
- 在對接OBS時,您只能通過調(diào)用應用開發(fā)環(huán)境的Rest接口來調(diào)用Connector實現(xiàn)對接。
場景描述
向OBS中存儲“objectA.txt”文件。
前提條件
請獲取如下關(guān)鍵信息:
- 已獲取OBS用戶的訪問密鑰 ID(Access key ID)和秘密訪問密鑰(Secret access key)。
- 已獲取OBS服務的區(qū)域ID。
- 已在OBS上創(chuàng)建存儲桶(例如“bing.testonly.1”),用于后續(xù)存儲對象使用。
配置Connector操作步驟
- 在APP開發(fā)界面左側(cè)列表單擊,選擇“連接 > 連接器”。
- 在Connectors配置界面中單擊“OBS”圖標,打開Connector列表。
- 單擊“新建”。
- 輸入與OBS對接的參數(shù),單擊“下一步”。圖 1 新建Connector
表 1 新建Connector頁面參數(shù)說明
參數(shù) | 說明 |
---|---|
名稱 | Connector的名稱。示例: TestOBS |
訪問密鑰 | OBS用戶的訪問密鑰 ID(Access key ID)。 |
密鑰 | OBS用戶的秘密訪問密鑰(Secret access key)。 |
賬號地區(qū) | OBS服務的區(qū)域ID。 |
內(nèi)容分發(fā)網(wǎng)絡 | CDN服務器的地址。通過該配置,您后續(xù)訪問上傳的靜態(tài)資源時,可不用登錄OBS,直接通過CDN訪問到靜態(tài)資源??蛇x配置。 |
描述 | Connector的描述信息。 |
5. 選擇存儲桶,用于選擇在OBS上哪個存儲桶上進行存儲,也可選擇多個桶進行存儲,這里選擇桶“bing.testonly.1”,單擊“保存”。
6. (可選)創(chuàng)建Connector后,您可進行簡單的測試,測試是否能在存儲桶上存儲對象。
說明:
該測試只能上傳小于1MB字節(jié)的對象。
(1)在該Connector詳情頁面單擊存儲桶所在行的。
(2)單擊“點擊上傳”,選擇對象文件,單擊“上傳”。
圖 2 選擇對象
(3)單擊上傳好的文件名,進行下載。打開下載的對象存儲文件,查看與上傳的對象存儲文件是否一致。
調(diào)用Connector
1. 調(diào)用Rest接口,查詢出Connector ID,根據(jù)Connector ID,才能調(diào)用具體的Connector。其中IP和Port分別是應用開發(fā)環(huán)境的IP地址和對外服務端口號。
http://IP:Port/u-route/baas/sys/v1.0/connectors?type=obs
該接口用于查詢所有創(chuàng)建的OBS類型的Connector的ID。本示例中的查詢結(jié)果中,找出Connector名稱為“TestOBS”的Connector ID為“003W000000FfSV4F5twG”。接下來我們將根據(jù)這個ID,調(diào)用對接OBS的Connector“TestOBS”。
{
"resCode": "0",
"resMsg": "Success",
"result": [
{
"id": "003W000000FfSV4F5twG",
"name": "TestOBS",
"type": "obs",
"createdBy": "10gd000000En2xfeFqQy",
"createdDate": "2018-04-17 07:23:53",
"lastModifiedBy": "10gd000000En2xfeFqQy",
"lastModifiedDate": "2018-04-17 07:33:05",
"owner": "10gd000000En2xfeFqQy",
"accessKey": "0ZILHVIXUXXXXXXXXXX",
"secretKey": "O5ZeitY4dDQlCm4pJf8ow3BcoXXXXXXXXXX",
"rootRegion": "cn-south-1",
"buckets": [
{
"name": "bingo.testonly.1",
"region": "cn-south-1"
}
],
"createdBy.name": "Lily",
"lastModifiedBy.name": "Lily",
"owner.name": "Lily"
},
{
"id": "003W000000FfSYZ2NIHI",
"name": "TestB",
"type": "obs",
"createdBy": "10gd000000En2xfeFqQy",
"createdDate": "2018-04-17 07:24:41",
"lastModifiedBy": "10gd000000En2xfeFqQy",
"lastModifiedDate": "2018-04-17 07:24:41",
"owner": "10gd000000En2xfeFqQy",
"accessKey": "fdas",
"secretKey": "fdas",
"rootRegion": "fdsa",
"buckets": null,
"createdBy.name": "Lily",
"lastModifiedBy.name": "Lily",
"owner.name": "Lily"
}
]
}
2. 通過調(diào)用應用開發(fā)環(huán)境的Rest接口實現(xiàn)與OBS的對接。
Rest接口為:
http://IP:Port/u-route/baas/sys/v1.0/connectors/ConnectorID/action?type=obs&op=action&object=FileName&dir=DirName&bucket=BucketName
參數(shù)說明如下:
- IP:應用開發(fā)環(huán)境的IP地址。
- Port:應用開發(fā)環(huán)境對外提供服務的端口號。
- ConnectorID:該Connector ID。可通過上一步進行查詢。
- action:具體的動作。如下:listbuckets:列舉該存儲桶上所有對象文件。putobject:上傳對象文件。viewobject:查看對象文件。delobject:刪除對象文件。createdir:在存儲桶上創(chuàng)建文件目錄。listdir:列舉該文件目錄下所有文件。deldir:刪除目錄。
- FileName:待存儲到OBS上的文件名,請攜帶文件類型后綴??蛇x參數(shù),根據(jù)接口動作進行攜帶。
- DirName:存儲桶上的文件目錄名??蛇x參數(shù),根據(jù)接口動作進行攜帶。
- BucketName:存儲桶名稱??蛇x參數(shù),根據(jù)接口動作進行攜帶。
例如查看存儲桶“bingo.testonly.1”上存儲對象文件“ObjectA.txt”的Rest接口為:
http://10.136.104.56:21112/u-route/baas/sys/v1.0/connectors/003W000000FfSV4F5twG/action?type=obs&op=viewobject&object=ObjectA.txt&bucket=bingo.testonly.1