fun工具下载地址:https://github.com/aliyun/fun/releases/tag/v2.1.1
一、基本概念介绍
本部分将向您介绍本产品中涉及的几个基本概念,以便于您更好地理解网盘产品。
网盘架构:
组织(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。
登录官网控制台:
创建Group:
创建完成后可以直接进入到网盘界面:
配置Storage(指定OSS Bucket和Drive分配策略)
创建Storage之前,需要准备以下资源:
1) 创建一个OSS Bucket,OSS控制台。
创建成功后,选中该Bucket,点击基础设置->跨域设置->创建规则
来源要填写您部署的UI界面所对应的域名,可以配置多个。
2) 创建一个有STSAssumeRole和OSSFull权限的子用户,并且记录下AK信息。
进入用户管理页面,新建用户
记录下AK信息
给用户授予STSAssumeRole和OSSFull的权限
3) 创建一个有OSSFull权限的角色,并记录下Arn
进入角色管理,创建角色:
然后给角色授予OSSFull的权限:
进入角色详情, 记录下角色Arn:
准备工作完毕。
开始创建Storage,进入存储配置,点击创建:
配置Storage参数:
给普通用户分配Drive
分配网盘有两种方式,一种是默认网盘,在配置Storage的时候填写。
另一种是管理员手动分配,在存储配置页面,选择一条Storage记录,点击操作列的+号。
选择一个用户即可分配网盘:
上传文件
选择一个网盘进入:
将文件或目录拖拽至空白区域即可上传:
下载文件
选择一个文件双击打开,右上角有下载按钮,选择自己需要的方式获取下载链接。
共享目录
选择一个目录,点击右下角共享按钮:
填写共享参数:
授权方式有三种:
1) 访问此链接的所有用户:访问此链接的用户都会分配一个共享,链接被访问后不会失效。
2) 第一个访问此链接的用户:第一个访问此链接的用户会分配一个共享,访问后链接立刻失效。
3) 所有知道此链接的人: 分享给所有人,无需登录网盘,只要访问链接就可以看到里面的内容。
参数填写完成后点击生成链接,然后将链接通过其他方式发送给需要的人。
三、功能实现方案介绍
网盘部署架构图
网盘所有功能都是通过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。
数据结构设计
对象之间的关系如下:
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的存储结构简化示意图:
1) Storage用于找到文件在OSS Bucket中的位置
2) Drive作为用户访问File的入口,用户通过Drive访问File之前需要先判断是否有该Drive的权限。
3) Share可以从Drive下任意目录创建,创建后用户可以通过Share访问到目录和文件。