
# 对接OBS云对象存储实例
#### 背景信息
对象存储服务（Object-based Storage Service，OBS）是一个基于对象的海量存储服务，为客户提供海量、安全、高可靠、低成本的数据存储能力，包括创建、修改、删除桶，上传、下载和删除对象等。
在AstroZero中，通过应用与OBS对接，可实现对象或Widget资产存储功能。
 #### 前提条件
- 使用OBS前，需要拥有一个华为账号或一个可用于访问OBS的IAM用户，即先注册华为云并实名认证、创建IAM用户、充值以及购买资源包，具体操作请参见[使用OBS前需要做的准备工作](https://support.huaweicloud.com/qs-obs/obs_qs_0001.html)。
- 获取AK（Access Key ID）、SK（Secret Access Key），即访问密钥对，具体操作请参见[获取AK/SK](https://support.huaweicloud.com/devg-apisign/api-sign-provide-aksk.html)。
- 已在华为OBS上，创建存储桶（例如"bing.testonly.1"），用于后续存储对象使用，具体操作请参见[如何创建桶](https://support.huaweicloud.com/usermanual-obs/zh-cn_topic_0045829088.html)，请记录创建桶时选择的区域。
 
#### 新建OBS连接器
1. 参考[创建连接器入口](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0653.html#astrozero_05_0653__section54416265268)中操作，进入创建连接器页面。
2. 选择"存储 \> OBS"，单击"+"。 
   图1选择OBS   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933046656.png "点击放大")
   
   
3. 设置OBS对接参数，单击"保存"。 
   图2设置基本信息   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960125957.png "点击放大")
   - 名称：新建连接器的名称，如TestOBS。
   
   - endpoint：指定承载REST服务端点的AstroZero服务器域名或IP。
   
   - 鉴权方式：访问OBS的鉴权方式。
     - 委托授权：通过创建委托，可将OBS资源共享给AstroZero。选择该方式后，保存连接器设置时，在弹出的提示框中，请单击"是"，即可访问OBS，不需要输入访问密钥对（AK/SK）。
     
     - AK/SK：通过IAM用户的访问密钥对（AK/SK），来进行鉴权。
      
   
   - 访问密钥：当"鉴权方式"配置为"AK/SK"时，需要配置用户的访问密钥AK，即[前提条件]中获取的Access Key ID值。
   
   - 密钥：当"鉴权方式"配置为"AK/SK"时，需要配置与访问密钥AK结合使用的私有访问密钥SK，即[前提条件]中获取的Secret Access Key值。
   
   - 内容分发网络：CDN服务器的地址。配置后，后续访问上传的静态资源时，可不用登录OBS，直接通过CDN访问到静态资源。
   
   - 描述：连接器的描述信息。
   
   - 打包当前配置：默认为选中，对信息敏感的场景，建议不勾选。 选中该选项后，应用打包时会将当前配置的连接器信息一并打出。例如，如果应用包发布到运行环境，当前配置默认会被同步到运行环境中。
     
   
   - 开启操作日志：选中该选项后，用户使用连接器上传、下载、查看文件时，将会记录操作日志。
   
   - 校验文件内容类型：开启文件类型校验后，会检查文件内容是否跟后缀类型匹配。 当前仅支持bmp、gif、png、jpg、ico、txt、xml和html几种常见的类型。
    
   图3添加桶   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933046628.png "点击放大")
   设置存储桶所在的区域和桶名称。可选择多个桶，此处以桶"bing.testonly.1"为例。通过配置"文件类型"和"文件大小（字节）"，可限制上传文件的类型和大小。
   - 区域：存储桶所在的区域，配置为[前提条件]中，创建桶时选择的区域。
   
   - 文件类型：文件类型可以配置为多个，多个文件类型之间由逗号分隔（如txt,png）。如果此处不填写，则支持所有类型。
   
   - 文件大小：配置为0或不填写，表示上传文件的大小不受限制，允许输入的最大值为9007199254740991，单位为字节。
   
   
   
   
4. （可选）测试是否能在存储桶中，存储对象。 
   ![](https://support.huaweicloud.com/usermanual-astrozero/public_sys-resources/note_3.0-zh-cn.png)
   此处的测试只能上传小于1MB字节的对象，且只支持txt文件。
   1. 在该连接器详情页面，单击存储桶所在行的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932887280.png)。
   
   2. 单击"点击上传"，选择对象文件，单击"上传"。
      图4选择对象   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960125977.png) 
   
   3. 单击上传好的文件名，进行下载。
      图5下载文件   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932887276.png) 
   
   4. 打开下载的对象存储文件，查看与上传的对象存储文件是否一致。
   
   
   
   
 
#### 通过REST接口调用连接器
可以通过调用REST接口，完成[表1]中功能。如何调用接口，请参见[连接器API](https://support.huaweicloud.com/api-astrozero/astrozero_api_0084.html)。
 表1调用连接器 
| 接口                    | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|
| 上传文件                  | 将本地文件上传到存储中。使用该API上传文件，默认只会上传到连接器下配置的第一个桶中。待上传的文件可以是任何类型，如文本文件、图片、视频等。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| 下载文件                  | 从存储中下载文件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| 删除文件                  | 从存储中删除无用的文件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| 删除目录                  | 从存储中删除某目录。如果目录下不为空，删除目录的同时也会删除该目录下文件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| 列举目录下文件               | 列举存储中某目录下文件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| 分段上传                  | 对于较大文件上传，可以切分成段上传。用户可以在如下的应用场景内（但不仅限于此），使用分段上传的模式： - 上传超过100MB大小的文件。  - 网络条件较差，和OBS等存储服务端之间的连接经常断开。  - 上传前无法确定将要上传文件的大小。   |
| 获取endpoint，即文件存储地址的前缀 | endpoint为文件存储地址的前缀，该前缀加上传对象的路径，是实际访问对象的全路径。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| 分享Token               | 获取临时Token，用户只要使用该临时Token即可访问文件，不用再使用access-token进行鉴权。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   
#### 通过服务编排调用连接器
OBS连接器创建完成后，支持在服务编排中调用该连接器，实现与OBS的对接。用户也可以在脚本中调用连接器，实现与OBS的对接。
1. 参考[如何开发服务编排](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0601.html)中操作，创建一个空白服务编排。
   
   图6添加服务编排   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960125961.png "点击放大")
   
   
2. 在服务编排设计页面，从左侧"连接器 \> 存储"中，拖拽"OBS"图元至画布中。 
   OBS是系统预置的，与OBS对接的存储接口。
   图7拖拽OBS图元到画布中   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933046676.png "点击放大")
   
   
3. 选中OBS图元，单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933046680.png)，设置基本信息。
   
   图8设置基本信息   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932887232.png "点击放大")
   - 标签：OBS图元在系统中展示的名称。
   
   - 名称：OBS图元在系统中的唯一标识，不能和其他图元相同。
   
   - 连接器：该服务编排使用的连接器的名称。选择已创建的"TestOBS"。
   
   
   
   
4. 单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960125985.png)，设置调用OBS参数。
   
   图9配置OBS   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960125969.png "点击放大")
   - 动作：系统预置了如下三个动作。
     - view_object_obs：系统预置的查看存储对象接口。
     
     - put_object_obs：系统预置的存储对象接口，用于将系统的对象存储到OBS的存储桶中。
     
     - get_endpoint_obs：用于获取对象存储地址的前缀。该前缀加上传对象的路径，是实际访问对象的全路径。
      
   
   - 输入参数：为定义连接器时，设置的自定义参数。
     - "目标"配置为"object"时：请在"源"中，配置对象名称。
     
     - "目标"配置为"data"时：请在"源"中，配置对象具体数据。
     
     - "目标"配置为"bucket"时：请在"源"中，配置桶。
     
     - "目标"配置为"acl"时：请在"源"中，配置对象文件的访问控制权限。例如"private"（私有）、"public-read"（公共读）、"public-read-write"（公共读写）和"default"（和桶权限一致）。
      
   
   - 输出参数："源"选择"result"，"目标"用于接收支付结果，必须定义一个空实例的结构变量来进行接收。
   
   
   
   
5. 连接开始图元和OBS图元。 
   图10连接图元   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960125945.png)
   
   
6. 单击服务编排编辑器空白区域，选择![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932887272.png)，设置服务编排出参。
   
   将OBS图元的输出参数，作为整个服务编排的输出参数。
   图11设置输出参数   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960285753.png "点击放大")
   
   
7. 单击页面上方的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960125973.png)，保存服务编排。
8. 保存成功后，单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960125965.png)，运行服务编排。
9. 在OBS上，查看存储桶中存储的对象列表，可查看到对象已存储成功。
10. 单击页面上方的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960285805.png)，启用服务编排。
 
