通过应用开发环境与OBS(Object-based Storage Service)对接,实现对象或者Widget资产存储功能。
背景信息
对象存储服务(Object-based Storage Service,OBS)是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力,包括:创建、修改、删除桶,上传、下载、删除对象等。
在配置S3存储功能章节我们介绍过如何对接Amazon S3,本节将介绍如何对接OBS。
两者相同点如下:
- 两者对接的应用场景相同,都是为了实现对象或者Widget资产等的存储功能。
- 两者在应用开发环境上如何配置Connector的操作步骤相似。
两者差异点如下:
- 在对接Amazon S3时,您可以在Flow中调用Connector实现对接。
- 在对接OBS时,您只能通过调用应用开发环境的Rest接口来调用Connector实现对接。
场景描述
向OBS中存储“objectA.txt”文件。
前提条件
请获取如下关键信息:
- 已获取OBS用户的访问密钥 ID(Access key ID)和秘密访问密钥(Secret access key)。
- 已获取OBS服务的区域ID。
- 已在OBS上创建存储桶(例如“bing.testonly.1”),用于后续存储对象使用。
配置Connector操作步骤
- 在APP开发界面左侧列表单击,选择“连接 > 连接器”。
- 在Connectors配置界面中单击“OBS”图标,打开Connector列表。
- 单击“新建”。
- 输入与OBS对接的参数,单击“下一步”。图 1 新建Connector
表 1 新建Connector页面参数说明
参数 | 说明 |
---|---|
名称 | Connector的名称。示例: TestOBS |
访问密钥 | OBS用户的访问密钥 ID(Access key ID)。 |
密钥 | OBS用户的秘密访问密钥(Secret access key)。 |
账号地区 | OBS服务的区域ID。 |
内容分发网络 | CDN服务器的地址。通过该配置,您后续访问上传的静态资源时,可不用登录OBS,直接通过CDN访问到静态资源。可选配置。 |
描述 | Connector的描述信息。 |
5. 选择存储桶,用于选择在OBS上哪个存储桶上进行存储,也可选择多个桶进行存储,这里选择桶“bing.testonly.1”,单击“保存”。
6. (可选)创建Connector后,您可进行简单的测试,测试是否能在存储桶上存储对象。
说明:
该测试只能上传小于1MB字节的对象。
(1)在该Connector详情页面单击存储桶所在行的。
(2)单击“点击上传”,选择对象文件,单击“上传”。
图 2 选择对象
(3)单击上传好的文件名,进行下载。打开下载的对象存储文件,查看与上传的对象存储文件是否一致。
调用Connector
1. 调用Rest接口,查询出Connector ID,根据Connector ID,才能调用具体的Connector。其中IP和Port分别是应用开发环境的IP地址和对外服务端口号。
http://IP:Port/u-route/baas/sys/v1.0/connectors?type=obs
该接口用于查询所有创建的OBS类型的Connector的ID。本示例中的查询结果中,找出Connector名称为“TestOBS”的Connector ID为“003W000000FfSV4F5twG”。接下来我们将根据这个ID,调用对接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. 通过调用应用开发环境的Rest接口实现与OBS的对接。
Rest接口为:
http://IP:Port/u-route/baas/sys/v1.0/connectors/ConnectorID/action?type=obs&op=action&object=FileName&dir=DirName&bucket=BucketName
参数说明如下:
- IP:应用开发环境的IP地址。
- Port:应用开发环境对外提供服务的端口号。
- ConnectorID:该Connector ID。可通过上一步进行查询。
- action:具体的动作。如下:listbuckets:列举该存储桶上所有对象文件。putobject:上传对象文件。viewobject:查看对象文件。delobject:删除对象文件。createdir:在存储桶上创建文件目录。listdir:列举该文件目录下所有文件。deldir:删除目录。
- FileName:待存储到OBS上的文件名,请携带文件类型后缀。可选参数,根据接口动作进行携带。
- DirName:存储桶上的文件目录名。可选参数,根据接口动作进行携带。
- BucketName:存储桶名称。可选参数,根据接口动作进行携带。
例如查看存储桶“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