华为云KooDrive云空间服务对接使用完全指南
一、KooDrive云空间服务概述
云空间服务KooDrive是华为云面向政企等客户推出的集数据存储、访问、同步、管理和协作等功能于一体的在线服务,是企业和个人的一站式数字内容中枢。KooDrive定位为个人和家庭的数字内容中枢,面向运营商提供安全可靠的高性能云存储底座,助力构建个人云空间、家庭云空间等应用场景。
在企业数字化转型的浪潮中,文件分散在多人多地、查找困难、数字资产易流失、跨部门协作不便等问题日益突出。KooDrive充分发挥华为云的云云协同优势,支持多终端覆盖,满足多种应用场景的数字内容存储和协作诉求。云盘服务从单一的文档存储,向共享分发、共享协作不断深度发展,逐步成为协同办公的基础平台,并演进为协同办公的入口。
1.1 核心优势
KooDrive具备以下核心优势:
- 高稳定性与大规模处理能力:支持千亿级文件存储和千亿级并发,确保数据流转效率,满足企业海量数据存储和使用诉求。
- 可靠的数据持久性:提供12个9的数据持久性,配合秒级容灾切换,保障数据安全无忧。
- 快速检索:实现秒级检索,提升数据管理效率。
- 安全和可靠:数据加密、密钥管理、存储流转加密等机制,确保数据全生命周期的隐私安全和可靠。
- 卓越生态:开放的API,易于集成,快速构建生态系统。
- 内容高效协作:文件实时同步,多人多地多端协同访问,跨内外部组织协作。
- 多级权限管理:全周期全流程内容级安全可控,安全防泄漏。
1.2 应用场景
KooDrive支持企业海量文件集中存储和管理,避免因文件散乱带来的风险,如重要资料外泄、损坏或丢失。支持企业用户按需扩容,解决本地空间不足的问题,且无需自行维护。支持体系化的空间和文件管理能力,按企业组织和成员进行管理,支持团队和个人空间。在协同办公场景中,企业多人基于文件协作共同完成特定工作,KooDrive提供了一站式文件处理平台,实现云空间多种场景接口透传集合。
二、服务开通与初始化配置
在使用KooDrive服务之前,首先需要完成服务开通操作。KooDrive服务需要先开通才能正常使用。需要注意的是,IAM用户无法开通服务,必须使用企业租户账号进行操作。
需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联
2.1 开通流程
开通KooDrive服务的具体步骤如下:
- 登录控制台:企业租户使用华为云账号登录KooDrive服务控制台。
- 单击开通:在控制台总览页,单击“立即开通”按钮。
- 配置购买参数:根据业务需求选择区域、计费模式、用户数和存储空间等参数。
- 确认订单:查看订单详情,勾选服务使用声明。
- 完成创建:按需计费模式无需支付,完成创建即可;包年包月模式需要完成支付。
2.2 购买参数详解
开通KooDrive时需要配置以下核心参数:
- 区域:不同区域的云服务产品之间内网互不相通。建议选择最靠近业务的区域以减少网络时延、提高访问速度。默认选择“北京四”。区域选择并提交成功后将无法修改。
- 计费模式:提供包年包月、按需计费两种模式。
- 包年包月:预付费模式,先付费再使用,按照订单的购买周期进行结算。
- 按需计费:后付费模式,先使用再付费,根据选购的计费项实际使用量计费。
- 套餐规格(包年包月):基础版套餐,有不同档位的用户人数和空间大小的组合套餐。
- 规格扩容(包年包月):可根据业务需求选择扩容包来增加用户人数、存储空间。
- 购买时长(包年包月):最短为1个月,最长为3年,可勾选自动续费。
- 用户数(按需):最小配置为1人,最大支持20000人。
- 存储空间(按需):最小配置为1GB,最大支持95PB。
2.3 创建组织与配置企业云空间
开通服务后,企业组织和云空间的基础信息尚未构建,企业租户需创建企业组织并完成基本的服务配置。具体操作如下:
- 在KooDrive服务控制台,单击“云空间配置”,在云空间配置页面单击“创建组织”。
- 组织创建完成后,KooDrive自动以该组织名称创建企业的一级部门,后续创建的部门都属于一级部门的子部门。
- 企业租户的华为账号自动被设置为系统管理员,拥有该组织的所有管理权限。
- 在KooDrive业务页面可以完善企业组织架构,使用团队及个人空间。
在管理控制台,企业的管理者可以对企业的部门、用户、部门和用户空间进行管理操作,包括新建部门、新建用户用户组、分配部门及用户空间等。系统管理员可以管理所有部门的用户,部门管理员可以管理本部门下的用户。
三、API对接开发指南
KooDrive提供了REST风格API,支持通过HTTPS请求调用。开发者可以使用本文档提供的API对云空间服务进行相关操作,如新增文件目录、获取文件详情、重命名文件等。
3.1 终端节点(Endpoint)
终端节点即调用API的请求地址,不同服务不同区域的终端节点不同。目前KooDrive支持的终端节点如下:
- 亚太-新加坡区域:intl.myhuaweicloud-koodrive.com
- 亚太-雅加达区域:jkt.myhuaweicloud-koodrive.com
3.2 请求构造
REST API请求URI由以下部分组成:
{URI-scheme}://{Endpoint}/{resource-path}?{query-string}各参数说明如下:
- URI-scheme:传输协议,当前KooDrive所有API均采用HTTPS协议。
- Endpoint:承载REST服务端点的服务器域名或IP。
- resource-path:资源路径,即API访问路径。从具体API的URI模块获取。
- query-string:可选参数,用于查询指定参数数据,形式为“参数名=参数取值”。
例如,调用创建批量任务接口,使用亚太-新加坡区域的Endpoint,resource-path为“/koodrive/ose/v1/jobs”,拼接后的请求URI为:
https://intl.myhuaweicloud-koodrive.com/koodrive/ose/v1/jobsHTTP请求方法包括:
- GET:请求服务器返回指定资源。
- POST:请求服务器新增资源或执行特殊操作。
- DELETE:请求服务器删除指定资源。
- PUT:请求服务器更新指定资源。
3.3 认证与鉴权
KooDrive提供了2种身份认证登录方式:
- 租户管理员可以使用华为云IAM的账号与密码登录KooDrive控制台,登录成功后使用IAM的Token进行认证。
- 租户管理员、部门管理员和普通用户可以使用OrgID的账号和密码登录KooDrive服务,登录成功后使用KooDrive业务控制服务生成的Token进行认证。
在调用API时,请求头中必须包含鉴权信息。目前KooDrive服务采用Token鉴权,同时也支持APP鉴权。
3.3.1 Token认证
Token在计算机系统中代表令牌的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限。
Token获取方式:Token目前采取从服务前端登录后,从cookie获取。“Authorization”的Value值即为要获取的AT。
Token有效期:当前Token有效期为20分钟。20分钟内有调用接口则以调用时间点为基准延长至20分钟,20分钟内无任何操作则Token失效。
Token使用方式:获取Token后,在请求消息头中添加“Authorization”,其值即为Token。格式参考:Bearer+{access_token}。
请求消息头示例:
POST https://intl.myhuaweicloud-koodrive.com/koodrive/ose/v1/jobs
Content-Type: application/json
Authorization: Bearer xxx3.3.2 APP鉴权
针对需要直接调用KooDrive接口的场景,开放了APP鉴权方式。可通过KooDrive提供的APP鉴权生成规则来获取鉴权,将鉴权放入请求头中。
APP鉴权请求头示例:
Authorization: HMAC-SHA256 AppId=a378331eca141163119eb602adb67b7802cc79cd33ba44c7d2fe61d1586c96a1,SignedHeaders=host;x-date;x-user-id,Signature=bd355f202be40f95bf9510fd7bd48ad711a7d144c01df07d515ee0fbf3a47416
X-User-Id: 1505084218764547200
Host: 10.32.45.165
X-Date: 20240909T033325Z3.4 核心API接口
KooDrive API接口涵盖用户管理、空间管理、文件管理、分享管理、群组管理等多个类别。
3.4.1 用户管理接口
包括查询用户信息、修改用户信息、删除用户及对应资源、用户注册、登录、登出、刷新鉴权、重置密码、修改密码等。
3.4.2 空间管理接口
包括创建部门或个人空间、查询个人空间信息、删除空间、修改个人空间信息、查询空间使用概览(总数、总空间容量、已用总空间)、按分配配额查询、按用户查询用户空间详情、创建群组空间等。
创建空间API示例:
POST /koodrive/ose/v1/space/{ownerId}3.4.3 文件管理接口
包括获取个人空间文件列表、获取文件详情(文件大小、名称、修改时间等)、新增文件目录、上传文件(创建文件元数据)、重命名文件、列举收藏文件、批量处理文件等。
列举个人空间文件API示例:
POST /koodrive/ose/v1/files/0创建文件元数据API示例:
POST /koodrive/ose/v1/files/metadata3.4.4 分享管理接口
包括创建共享文件夹、删除共享文件夹、查看共享文件夹、重命名共享文件夹、邀请成员加入共享文件夹、成员移出共享文件夹、列举分享文件等。
3.4.5 群组管理接口
包括查询群组成员列表、群组成员修改昵称、创建用户群组、删除群组等。
3.5 Python对接代码示例
以下是一个使用Python调用KooDrive API的完整示例,涵盖Token获取、文件列表查询和文件上传功能。
import requests
import json
# KooDrive配置
ENDPOINT = "intl.myhuaweicloud-koodrive.com"
BASE_URL = f"https://{ENDPOINT}"
# Token(从cookie获取或通过登录接口获取)
ACCESS_TOKEN = "your_access_token_here"
# 请求头
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {ACCESS_TOKEN}"
}
def list_files(container_id):
"""
列举指定空间中的文件列表
:param container_id: 空间ID
"""
url = f"{BASE_URL}/koodrive/ose/v1/files/0"
payload = {
"containerId": container_id,
"pageSize": 20,
"pageNum": 1
}
response = requests.post(url, headers=headers, json=payload)
if response.status_code == 200:
return response.json()
else:
print(f"Error: {response.status_code}, {response.text}")
return None
def upload_file_metadata(container_id, file_name, file_size, parent_id=None):
"""
创建文件元数据(上传文件第一步)
:param container_id: 空间ID
:param file_name: 文件名
:param file_size: 文件大小(字节)
:param parent_id: 父目录ID(可选)
"""
url = f"{BASE_URL}/koodrive/ose/v1/files/metadata"
payload = {
"containerId": container_id,
"fileName": file_name,
"fileSize": file_size,
"parentId": parent_id or "root"
}
response = requests.post(url, headers=headers, json=payload)
if response.status_code == 200:
return response.json()
else:
print(f"Error: {response.status_code}, {response.text}")
return None
def get_file_download_url(file_id):
"""
获取文件下载地址
:param file_id: 文件ID
"""
url = f"{BASE_URL}/koodrive/ose/v1/files/download"
payload = {
"fileId": file_id
}
response = requests.post(url, headers=headers, json=payload)
if response.status_code == 200:
return response.json().get("downloadUrl")
else:
print(f"Error: {response.status_code}, {response.text}")
return None
# 使用示例
if __name__ == "__main__":
# 假设已有空间ID
container_id = "IAADfsBFCO6WtAtuAb7e92cde625843cfb7f4ceba802e0b"
# 列举文件
files = list_files(container_id)
if files:
print(f"文件列表: {json.dumps(files, indent=2, ensure_ascii=False)}")
# 上传文件元数据
result = upload_file_metadata(container_id, "test_document.pdf", 1024000)
if result:
print(f"文件元数据创建成功: {json.dumps(result, indent=2, ensure_ascii=False)}")3.6 Java对接代码示例
以下是一个使用Java调用KooDrive API的完整示例,使用OkHttp作为HTTP客户端。
import okhttp3.*;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class KooDriveClient {
private static final String ENDPOINT = "intl.myhuaweicloud-koodrive.com";
private static final String BASE_URL = "https://" + ENDPOINT;
private static final ObjectMapper mapper = new ObjectMapper();
private final OkHttpClient client = new OkHttpClient();
private final String accessToken;
public KooDriveClient(String accessToken) {
this.accessToken = accessToken;
}
private Request.Builder getBaseRequestBuilder() {
return new Request.Builder()
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer " + accessToken);
}
/**
* 列举指定空间中的文件列表
*/
public String listFiles(String containerId, int pageSize, int pageNum) throws IOException {
String url = BASE_URL + "/koodrive/ose/v1/files/0";
Map payload = new HashMap<>();
payload.put("containerId", containerId);
payload.put("pageSize", pageSize);
payload.put("pageNum", pageNum);
String jsonPayload = mapper.writeValueAsString(payload);
Request request = getBaseRequestBuilder()
.url(url)
.post(RequestBody.create(jsonPayload, MediaType.parse("application/json")))
.build();
try (Response response = client.newCall(request).execute()) {
if (response.isSuccessful()) {
return response.body().string();
} else {
throw new IOException("Error: " + response.code() + ", " + response.body().string());
}
}
}
/**
* 创建文件元数据(上传文件第一步)
*/
public String createFileMetadata(String containerId, String fileName,
long fileSize, String parentId) throws IOException {
String url = BASE_URL + "/koodrive/ose/v1/files/metadata";
Map payload = new HashMap<>();
payload.put("containerId", containerId);
payload.put("fileName", fileName);
payload.put("fileSize", fileSize);
payload.put("parentId", parentId != null ? parentId : "root");
String jsonPayload = mapper.writeValueAsString(payload);
Request request = getBaseRequestBuilder()
.url(url)
.post(RequestBody.create(jsonPayload, MediaType.parse("application/json")))
.build();
try (Response response = client.newCall(request).execute()) {
if (response.isSuccessful()) {
return response.body().string();
} else {
throw new IOException("Error: " + response.code() + ", " + response.body().string());
}
}
}
/**
* 获取文件下载地址
*/
public String getFileDownloadUrl(String fileId) throws IOException {
String url = BASE_URL + "/koodrive/ose/v1/files/download";
Map payload = new HashMap<>();
payload.put("fileId", fileId);
String jsonPayload = mapper.writeValueAsString(payload);
Request request = getBaseRequestBuilder()
.url(url)
.post(RequestBody.create(jsonPayload, MediaType.parse("application/json")))
.build();
try (Response response = client.newCall(request).execute()) {
if (response.isSuccessful()) {
String responseBody = response.body().string();
Map result = mapper.readValue(responseBody, Map.class);
return (String) result.get("downloadUrl");
} else {
throw new IOException("Error: " + response.code() + ", " + response.body().string());
}
}
}
public static void main(String[] args) {
try {
String token = "your_access_token_here";
KooDriveClient client = new KooDriveClient(token);
String containerId = "IAADfsBFCO6WtAtuAb7e92cde625843cfb7f4ceba802e0b";
// 列举文件
String filesResult = client.listFiles(containerId, 20, 1);
System.out.println("文件列表: " + filesResult);
// 创建文件元数据
String metadataResult = client.createFileMetadata(containerId, "test_document.pdf", 1024000, null);
System.out.println("文件元数据创建成功: " + metadataResult);
} catch (IOException e) {
e.printStackTrace();
}
}
} 四、权限管理
4.1 IAM权限管理
如果您需要对华为云上购买的KooDrive资源,为企业中的员工设置不同的访问权限,以达到不同员工之间的权限隔离,您可以使用统一身份认证服务IAM进行精细的权限管理。
通过IAM,您可以:
- 根据企业的业务组织,在您的华为账号中,给企业中不同职能部门的员工创建IAM用户,让员工拥有唯一安全凭证,并配置KooDrive资源。
- 根据企业用户的职能,设置不同的访问权限,以达到用户之间的权限隔离。
- 将KooDrive资源委托给更专业、高效的其他华为云账号或者云服务进行代运维。
KooDrive服务支持角色与策略授权。默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限。
授权流程如下:
- 创建用户组并授权:在IAM控制台创建用户组,并授予云空间服务管理员权限“KooDrive FullAccess”。
- 创建用户并加入用户组:在IAM控制台创建用户,并将其加入已创建的用户组。
- 用户登录并验证权限:新创建的用户登录控制台,切换至授权区域验证权限。
如果系统预置的KooDrive权限不满足授权要求,可以创建自定义策略。目前KooDrive只有一种权限配置,因此无需进行自定义策略设置。
4.2 组织级权限体系
在华为云Console上开通KooDrive的企业租户使用的是华为云账号,开通KooDrive服务后,KooDrive会以该华为云账号创建一个系统管理员账号。用该账号登录KooDrive业务后,可以进行组织(部门和用户)和空间管理。
通过该系统管理员创建的用户,需要为其分配角色以赋予相应的权限,用户权限可以进行详细分配和管理。系统管理员可以对成员进行权限管理,可管理成员可以对除管理员和可管理成员以外的成员进行权限管理。
租户管理员可以设置员工的访问权限,可以设置业务管理员角色,并添加管理员。普通用户只能在租户管理员和部门管理员设置的权限下使用KooDrive服务。
五、最佳实践与常见问题
5.1 最佳实践建议
- 合理规划组织架构:在开通服务后,首先完善企业组织架构,按部门创建对应的空间和用户,实现清晰的权限隔离。
- 使用Token缓存机制:Token有效期为20分钟,建议在应用中实现Token缓存和自动刷新机制,避免频繁获取Token。
- 文件上传分片策略:对于大文件上传,建议使用分片上传方式,提高上传成功率和效率。上传流程为先创建文件元数据,然后上传文件数据块。
- 错误重试机制:在调用API时,建议实现指数退避重试机制,应对网络波动和服务暂时不可用等情况。
- 安全最佳实践:不要直接使用主账号进行日常API调用,应创建IAM子账号并授予最小权限。Token应在服务端保存,避免在前端暴露。
- 成本优化:根据业务实际需求选择计费模式。长期稳定业务建议选择包年包月,短期或波动业务建议选择按需计费。
5.2 常见错误码排查
当接口调用出错时,会返回错误码及错误信息说明,错误响应的Body体格式如下:
{
"code": 13000201,
"msg": "inner server invoke failure"
}常见错误码及处理方法:
- 13000102:参数校验失败,请检查请求参数是否符合接口要求。
- 13000301:空间不存在,请确认空间ID是否正确或空间是否已被删除。
- APIGW系列错误码:如果返回以APIGW开头的错误码,请参考API网关错误码说明进行排查。
六、总结
华为云KooDrive作为一站式数字内容中枢,为政企客户提供了强大的云存储与协作能力。本文从服务开通、组织配置、API对接、权限管理等多个维度,全面介绍了KooDrive的对接使用方法。通过REST API的开放能力,开发者可以灵活地将KooDrive集成到各类企业应用中,实现文件的统一存储、管理和协作。在实际开发中,建议遵循最佳实践,合理规划组织架构,做好Token管理和错误处理,充分发挥KooDrive在高性能存储、安全可靠、多端协同等方面的优势,助力企业数字化转型和知识协作效率提升。
七、常见问题解答
Q1:KooDrive支持哪些认证方式?
A:KooDrive支持两种认证方式:Token认证和APP鉴权。Token认证适用于从服务前端登录后获取Token的场景,有效期20分钟。APP鉴权适用于直接调用KooDrive接口的场景,通过HMAC-SHA256签名生成鉴权信息。
Q2:KooDrive的Token有效期是多久?如何刷新?
A:当前Token有效期为20分钟。20分钟内有调用接口则以调用时间点为基准延长至20分钟,20分钟内无任何操作则Token失效。可以通过调用刷新鉴权接口来主动刷新Token。
Q3:IAM用户能否开通KooDrive服务?
A:不能。IAM用户无法开通KooDrive服务,必须使用企业租户账号(华为云主账号)进行操作。但IAM用户可以获取使用KooDrive的权限,通过将其加入已授权的用户组来实现。
Q4:KooDrive支持哪些文件类型的缩略图?
A:KooDrive支持生成文档和视频文件的缩略图。云空间中存储的文档和视频类型文件将由默认图标变更为缩略图显示。
Q5:KooDrive回收站的文件可以自动删除吗?
A:可以。回收站中的文件支持自定义到期自动删除,例如7天、14天或30天等。
Q6:KooDrive的计费模式有哪些?如何选择?
A:KooDrive提供包年包月和按需计费两种计费模式。包年包月是预付费模式,适合长期稳定业务;按需计费是后付费模式,适合短期或波动业务。



