基于智能媒体管理产品构建的网盘介绍

fun工具下载地址:https://github.com/aliyun/fun/releases/tag/v2.1.1

一、基本概念介绍

本部分将向您介绍本产品中涉及的几个基本概念,以便于您更好地理解网盘产品。

网盘架构:

1.png

组织(Group)

Group是网盘的一个管理对象,所有网盘资源和网盘用户都归属于某个Group,Group之间相互隔离。您可以为不同的用户群体创建不同的Group,Group之间的资源不能共享。您可以登录官网控制台维护您的Group对象。

客户端(Client)

Client是访问Group的受信对象,为了避免Group的资源被任意客户端访问。在调用API访问Group资源之前,需要通过Client信息鉴权,鉴权通过后才能访问。您可以登录官网控制台维护您Group下的受信Client对象。

企业用户(User)

User是所有登录官网控制台的企业用户,每个User都可以创建Group,并使用网盘资源。企业用户与使用网盘的普通用户不是同一个概念,企业用户是网盘的管理员,需要配置网盘的各项参数,提供网盘给普通用户使用。

存储配置(Storage)

Storage是网盘的存储配置对象,配置项包含:
1) 网盘存储文件使用的OSS Bucket。
2) 网盘访问OSS所使用的子用户AK和Role。
3) 是否自动给每个普通用户分配网盘。
4) 网盘是否开通文档预览服务。

网盘使用之前,必须由管理员指定文件存储的OSS Bucket,否则无法使用。

用户网盘(Drive)

Drive是普通用户使用网盘的入口,用户可以从Drive上传下载文件,可以将Drive中的目录共享给其他普通用户。普通用户获得Drive都是由管理员分配,可以有容量限制。

用户共享(Share)

Share是普通用户之间共享目录的入口,用户可以通过Share访问其他用户的文件。Share有两种权限:
1) 只读:只能查询,无法修改
2) 读写:可以修改和查询

普通用户(GroupUser)

GroupUser是所有使用网盘的用户,GroupUser属于Group,只能访问所属Group下的资源。

文件(File)

File对象包含两种类型:file/folder。File对象只存放了文件的Meta信息,Meta信息包含文件在OSS中的存储路径,可以通过此对象找到对应OSS Bucket中存放的实际文件。可以通过Drive ID或者Share ID,加上路径查询某目录下的文件。

二、功能和使用方法介绍

管理Group和Client(创建企业网盘)

使用网盘的第一步就是登录官网控制台创建一个Group。

登录官网控制台:

1.png

创建Group:

2.png

创建完成后可以直接进入到网盘界面:

4.png

配置Storage(指定OSS Bucket和Drive分配策略)

创建Storage之前,需要准备以下资源:

1) 创建一个OSS Bucket,OSS控制台

17.png

创建成功后,选中该Bucket,点击基础设置->跨域设置->创建规则

18.png

来源要填写您部署的UI界面所对应的域名,可以配置多个。

2) 创建一个有STSAssumeRole和OSSFull权限的子用户,并且记录下AK信息。

进入用户管理页面,新建用户

19.png

记录下AK信息

20.png

给用户授予STSAssumeRole和OSSFull的权限

21.png

3) 创建一个有OSSFull权限的角色,并记录下Arn

进入角色管理,创建角色:

22.png

23.png

24.png

然后给角色授予OSSFull的权限:

25.png

进入角色详情, 记录下角色Arn:

26.png

准备工作完毕。

开始创建Storage,进入存储配置,点击创建:

5.png

配置Storage参数:

6.png

给普通用户分配Drive

分配网盘有两种方式,一种是默认网盘,在配置Storage的时候填写。

另一种是管理员手动分配,在存储配置页面,选择一条Storage记录,点击操作列的+号。

7.png

选择一个用户即可分配网盘:

8.png

上传文件

选择一个网盘进入:

9.png

将文件或目录拖拽至空白区域即可上传:

10.png

下载文件

选择一个文件双击打开,右上角有下载按钮,选择自己需要的方式获取下载链接。

11.png

共享目录

选择一个目录,点击右下角共享按钮:

12.png

填写共享参数:

13.png

授权方式有三种:
1) 访问此链接的所有用户:访问此链接的用户都会分配一个共享,链接被访问后不会失效。
2) 第一个访问此链接的用户:第一个访问此链接的用户会分配一个共享,访问后链接立刻失效。
3) 所有知道此链接的人: 分享给所有人,无需登录网盘,只要访问链接就可以看到里面的内容。

参数填写完成后点击生成链接,然后将链接通过其他方式发送给需要的人。

三、功能实现方案介绍

网盘部署架构图

14.png

网盘所有功能都是通过API调用,网盘业务代码部署在函数计算中,由API网关收到用户请求后触发。

例如:用户上传文件场景

1) 用户发送创建文件请求到API网关。

2) API网关收到请求后,触发函数计算中对应的handler

3) handler运行起来后,生成文件ID,并将文件的ID、名称、路径、大小等Meta信息写入OTS。

4) 基于文件的ID,生成一个访问OSS的STS Token,并返回。

5) API网关将handler返回信息透传给用户。

6) 用户使用STS Token访问OSS,将文件上传到OSS。

7) 文件上传完成后,OSS通知函数计算中对应handler,handler更新文件大小和状态等信息写入OTS。

数据结构设计

对象之间的关系如下:

15.png

1) Group包含所有资源对象,隔离不同的网盘。
2) Storage配置OSS存储资源,提供实际文件的存储位置。
3) Drive是基于Storage的存储目录,Drive中包含权限信息,记录了可访问此目录的用户,用户只能通过Drive或Share访问网盘的文件。
4) Share是用于分享目录给其他用户的对象,Drive下所有folder都可以创建Share,并分享给其他用户。Share中包含权限信息,记录了可访问此目录的用户。
4) file、folder都是File对象,只是type不同。记录了一个文件信息。访问file或folder只能基于Drive或Share,不能直接访问文件。

网盘所有对象的OTS表结构设计:
http://apsaradrive-site.oss-cn-shanghai.aliyuncs.com/#/docs/api%2Fots-design

File对象Path的存储结构简化示意图:

16.png

1) Storage用于找到文件在OSS Bucket中的位置
2) Drive作为用户访问File的入口,用户通过Drive访问File之前需要先判断是否有该Drive的权限。
3) Share可以从Drive下任意目录创建,创建后用户可以通过Share访问到目录和文件。

四、参考文章

部署指南: https://yq.aliyun.com/articles/613780

猜你喜欢

转载自yq.aliyun.com/articles/613777