华为云用户手册

  • 使用账号登录时,界面提示“没有权限登录” 在使用OBS Browser+过程中,如果使用账号登录时提示“没有权限登录”,原因是 统一身份认证 服务平台认证失败。 可按照以下步骤排查解决问题: 联系当前租户的安全管理员,登录统一身份认证服务控制台。 查看当前AK所属用户是否被禁用。 查看当前AK所属用户的访问方式是否开启编程访问。 查看当前用户请求是否授权登录操作。 查看当前用户策略是否授权登录操作。 父主题: 常见问题
  • 后续处理 在对象有效期内,用户可以重复做对象恢复操作。对象的有效期会根据最新一次的恢复完成时间开始算起,以此可以达到延长对象有效期的目的。 重复恢复对象时,其过期时间应该在上一次恢复对象的过期时间之后。例如:如果第一次恢复对象成功后,对象的过期时间为“4/12/2021 08:00:00 GMT+08:00”,则重复恢复该对象成功后,对象的过期时间应该为“4/12/2021 08:00:00 GMT+08:00”之后的时间。
  • 是否支持统计文件夹内的文件数目及大小 OBS Browser+不支持统计文件夹内的文件数目及大小,可以使用obsutil列举对象命令,指定前缀为需要查看的文件夹进行列举。 以Linux操作系统为例,运行./obsutil ls obs://bucket-test/test/ -du -limit=0命令,查询桶bucket-test下test文件夹的大小。 ./obsutil ls obs://bucket-test/test/ -du -limit=0 Start at 2023-03-16 06:40:18.2773873 +0000 UTC Listing objects . Remove the -du parameter to view more information [DU] Total prefix [test/] size: 990.85MB Util 5.4.6 版本及以上支持-du参数。 父主题: 常见问题
  • OBS Browser+功能概述 OBS Browser+支持的功能如OBS Browser+功能列表所示。 表1 OBS Browser+功能列表 功能 描述 对象存储桶基本操作 支持对象存储桶的基本操作,包括指定区域创建桶、列举桶、查询桶基本信息、桶ACL、桶内碎片管理、修改桶的存储类别、删除桶等。 对象存储对象基本操作 支持对象存储中对象的基本操作,包括新建文件夹,上传对象,列举对象、下载对象、删除对象等。 支持批量上传、下载、删除、复制、移动等。 支持拖拽上传。 支持文件预览。 定时上传。 并行文件系统基本操作 支持并行文件系统的基本操作,包括列举并行文件系统,查询并行文件系统的基本信息、并行文件系统ACL、碎片管理、删除并行文件系统等。 并行文件系统中对象基本操作 支持并行文件系统中对象的基本操作,包括新建文件夹,上传对象,列举对象、下载对象、删除对象等。 支持批量上传、下载、删除、复制、移动等。 支持拖拽上传。 支持分段上传。 外部桶管理 支持管理其他账号分享的桶。 支持挂载外部桶,取消挂载等桶相关操作。 支持上传对象到外部桶,下载外部桶内对象相关操作。 系统设置 通过“系统设置”设置OBS Browser+工具的参数。 支持设置任务运行的最大并发数为1~50。 支持设置上传和下载段的大小为9M~5120M。 支持设置OBS Browser+的语言切换。 支持设置工具的代理。 任务管理 任务管理器主要是对批量任务的执行状态进行展示,并提供暂停、删除、运行、查找等基本操作。 支持查看运行任务的实时运行情况,包括进度,耗时等。 支持批量暂停,删除任务和批量重试等。 已完成任务、失败任务支持按任务类型查询。 失败任务支持自动重试。 账号管理 提供登录登出功能,支持AK方式登录、账号登录以及授权码登录方式。 支持自动迁移上一代工具OBS Browser账号。 默认支持保存最多100个用户的登录信息。 支持登录历史删除和查询。 其他辅助功能 OBS Browser+ 提供了收藏夹的功能,帮助您收藏常用的OBS访问路径,默认最大支持收藏100条路径信息。 桶列表和对象列表都支持丰富的鼠标右键功能,帮您快速找到您想要的操作。 单击OBS Browser+的logo图标可以轻松一键切换主题,支持深色和浅色两种主题。
  • 操作步骤 登录OBS Browser+。 在页面上区域单击“创建桶”。 在弹出的对象框中根据需要填写桶信息,如图1所示。 图1 创建桶 表1 创建桶 参数 说明 区域 选择新建桶所在的Region。桶创建成功后,不支持变更区域,请谨慎选择。 存储类别 桶的存储类别。不同的存储类别可以满足客户业务对存储性能、成本的不同诉求。 标准存储:适用于有大量热点文件或小文件,且需要频繁访问(平均一个月多次)并快速获取数据的业务场景。 低频访问存储:适用于不频繁访问(平均一年少于12次),但需要快速获取数据的业务场景。 归档存储:适用于很少访问(平均一年一次),且对数据获取速率要求不高的业务场景。 更多详情请参见存储类别。 桶ACL 桶的读写权限控制。 私有:除桶ACL授权外的其他用户无桶的访问权限。 公共读:任何用户都可以对桶内对象进行读操作。 公共读写:任何用户都可以对桶内对象进行读/写/删除操作。 多AZ 开启多AZ后,数据冗余存储至多个AZ中。 请根据业务情况提前规划是否开启多AZ功能,桶一旦创建成功,后续无法修改多AZ功能的启停状态。 桶名称 输入需要创建的桶的名称,“桶名称”需全局唯一。 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用类IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 可以单击桶名输入框后的了解桶的命名规则详情,每个用户最多可在OBS 对象存储中创建100个桶。 由于通过URL访问桶时,桶名会作为URL的一部分,根据DNS标准,URL不支持大写字母,无法区分带大写字母的桶。因此,“桶名称”仅支持小写字母、数字、“-”、“.”作为桶的命名规则。例如:如果想通过URL访问名为“MyBucket”的桶,该URL将解析成名为“mybucket”的桶,导致访问出错。 DNS命名规范方便全局统一,方便在访问桶时对桶进行解析,可以使客户受益于新功能和优化性能,并支持对桶进行静态网站托管。 桶创建成功后,不能修改名称,创建时,请设置合适的桶名。 单击确认后,如果创建成功,会立即在桶列表中看到刚刚创建的桶。如果创建失败,会在界面上显示错误信息。
  • 操作步骤 登录OBS Browser+。 选中待查看的桶,右键单击选中“基本信息”。 在弹出的“基本信息”界面中查看桶的基本信息,如图1所示。 图1 桶的基本信息 表1 参数说明 参数 说明 桶名称 桶的名称 桶类型 对象存储 还是 并行文件系统。 区域 桶所在的区域。 存储类别 桶的存储类别,有标准存储、低频访问存储、归档存储三种类别。 桶版本号 桶的版本号。 存储用量 桶中存储的对象占用的存储空间。 对象数量 桶中存储的对象数量。 多AZ 多AZ功能的状态。 开启多AZ后,数据冗余存储至多个AZ中。 账户ID 桶的拥有者全局唯一标识,与“我的凭证”页面的“账户ID”相同。 创建时间 桶的创建时间。
  • 授权码登录 授权码登录是指使用其他人分享的OBS文件夹分享链接和提取码进行登录鉴权,进而访问其他人分享的文件夹。 图7 授权码登录 表7 登录参数说明 参数 约束 说明 授权码 必选 授权码是指其他人分享的OBS文件夹的分享链接;您可以通过OBS控制台,obsutil或者OBS Browser+分享文件夹,生成分享链接。 提取码 必选 在分享文件夹时指定的6位纯数字的提取码。 OBS Browser+不支持历史授权登录信息的查询和删除操作。 OBS Browser+对于过期的授权码信息会自动删除。
  • 账号登录 账号登录是指使用用户的账号密码进行登录鉴权,登录时直接填写注册的账号名、 IAM 用户名及密码,无需记录复杂的访问密钥(AK/SK)。 使用账号登录OBS Browser+时,不同的账号登录方法不同,请先判断您使用的是华为云账号、华为账号或者其他服务提供商。 华为云账号与华为账号的区别请参见华为云账号与华为账号的区别。您也可以登录华为云控制台判断当前使用的是华为账号还是华为云账号。 1. 华为云账号 您可以直接使用华为云账号或华为云账号创建的IAM用户登录OBS Browser+,创建IAM用户请参见创建IAM用户并授权使用OBS。 直接登录 图2 华为云账号直接登录 表2 参数说明 参数 约束 说明 账号名 必选 在华为云注册的账号名称。仅支持填写账号名,不支持手机号或邮箱等其他形式。 密码 必选 请输入华为云账号的密码。 使用华为云账号创建的IAM用户登录 图3 使用华为云账号创建的IAM用户登录 表3 参数说明 参数 约束 说明 账号名 必选 在华为云注册的账号名称。仅支持填写账号名,不支持手机号或邮箱等其他形式。 IAM用户名 必选 由华为云账号在IAM中创建的IAM用户名称。 密码 必选 输入IAM用户的密码。 2. 华为账号 华为账号无法直接登录OBS Browser+。建议您通过IAM控制台创建一个IAM用户,再使用IAM用户登录OBS Browser+,创建IAM用户请参见创建IAM用户并授权使用OBS。 图4 使用华为账号创建的IAM用户登录 表4 参数说明 参数 约束 说明 账号名 必选 在华为注册的账号名称。仅支持填写账号名,不支持手机号或邮箱等其他形式。 IAM用户名 必选 由华为账号在IAM中创建的IAM用户名称。 密码 必选 输入IAM用户的密码。 3. 其他服务提供商账号 直接登录 图5 其他服务提供商账号直接登录 表5 参数说明 参数 约束 说明 身份认证服务(IAM)地址 必选 服务提供商的身份认证服务地址。 对象存储服务 (OBS)地址 必选 服务提供商的对象存储服务地址,支持填写对象存储服务的全局域名或区域域名。 账号名 必选 在其他服务提供商注册的账号名称。仅支持填写账号名,不支持手机号或邮箱等其他形式。 密码 必选 输入账号的密码。 IAM用户登录 图6 其他服务提供商IAM用户登录 表6 参数说明 参数 约束 说明 身份认证服务(IAM)地址 必选 服务提供商的身份认证服务地址。 对象存储服务(OBS)地址 必选 服务提供商的对象存储服务地址,支持填写对象存储服务的全局域名或区域域名。 账号名 必选 在其他服务提供商注册的账号名称。仅支持填写账号名,不支持手机号或邮箱等其他形式。 IAM用户名 必选 由其他服务提供商的账号在其身份认证服务中创建的子用户名称。 密码 必选 输入IAM用户的密码。
  • 永久AK方式登录 AK方式登录是指使用访问密钥(AK/SK)进行登录鉴权,需要在登录时填写AK/SK。 IAM用户如果希望使用AK方式登录,必须要账号为其开启“编程访问”。开启方法请参见查看或修改IAM用户信息。 图1 AK方式登录 表1 登录参数说明 参数 约束 说明 账号名 必选 登录账号仅用于区分您在本地登录OBS Browser+的不同账号,方便您记忆和管理,与您的云账号无关,无需保持一致。 服务提供商 必选 支持默认的华为云对象存储服务以及其他与华为对象存储服务兼容的对象存储服务。 华为云对象存储服务: 默认提供了华为云所支持的所有区域的桶的相关操作。 其他对象存储服务:选择了其他对象存储服务后,必须根据您所选的服务指定其服务地址(服务的终端节点,即Endpoint),支持填写对象存储服务的全局域名或区域域名。 Access Key ID & Secret Access Key 必选 AK和SK支持IAM的认证机制,您可以单击登录界面的获取AccessKey链接后登录IAM控制台进行创建,以下是对AK和SK的解释说明: AK:Access Key ID,接入键标识,用户在OBS系统中的接入键标识,一个接入键标识唯一对应一个用户,一个用户可以同时拥有多个接入键标识。OBS系统通过接入键标识识别访问系统的用户。 SK:Secret Access Key,安全接入键,用户在OBS系统中的安全接入键,是用户访问OBS系统的密钥,用户根据安全接入键和请求头域生成鉴权信息。安全接入键和接入键标识一一对应。 如何获取访问密钥? 访问路径 可选 用于指定常用的OBS路径,登录后可以快速进入该路径。例如:obs://bucketName/folder01/ 记住我的访问密钥 可选 勾选保存访问密钥后,访问密钥(AK和SK)将被保存,下次登录时无需手动输入。请勿在临时使用的电脑上勾选该选项,以免产生账号安全风险。 OBS Browser+最多允许和保留100个历史账号登录。 如果您的所在的网络环境需要通过代理访问,需要提前在设置中配置网络代理。
  • 如何解决DNS解析失败 该问题属于网络问题,需要借助日志详情文件帮助定位。打开日志文件obssdk.log文件,查看最近日志,可看到关键报错信息如下所示: 可按照以下步骤排查解决问题: 检查本地DNS服务器是否填写有误,查看windows平台的DNS服务配置步骤如下。 在 "控制面板" 中,查看方式选择“类别”,依次单击"网络和Internet"、“网络和共享中心”和“更改适配器设置”。 右键单击要配置的连接,然后单击"属性 "。 单击 "Internet 协议版本 4 (TCP/IP) , 单击"属性",可查看具体的DNS服务器地址配置。 可以调整DNS服务器地址为8.8.8.8或者是114.114.114.114测试。 检查地址是否填写错误,如果错误请及时修改。 比如日志中解析失败地址是“obs.huawei.com”,可以打开CMD工具(Windows命令行)使用ping命令访问该地址,确认DNS是否可以解析正常。 如果解析失败,请检查地址是否填写错误。 父主题: 常见问题
  • 操作步骤 登录OBS Browser+。 单击页面左边“外部桶”,如图1所示。 图1 外部桶 单击“挂载”,并在“桶名”输入框中,输入需要挂载的外部桶名称,并单击“确定”,如图2所示。 图2 挂载外部桶 “桶名”需全局唯一,桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 当挂载外部桶成功后,用户可以在桶列表中查看到挂载的外部桶,并且对该桶有相应的ACL访问权限。
  • 前提条件 已获得访问其他用户的桶的相应ACL权限。 例如:账户A需要挂载账户B下的桶“bucket_share”以便于读取账户B下的桶“bucket_share”中的对象,则账户B需要先获取账户A的“账户ID”并通过OBS管理控制台先为其设置桶“bucket_share”的“读取权限”。 账户A可通过单击目标桶的“基本信息”页面获取“账户ID”(与拥有者ID相同)。 如果账户B为桶“bucket_share”设置匿名用户的“读取权限”,则所有注册OBS的用户均可以挂载“bucket_share”。为匿名用户设置权限的方法请参见配置桶ACL权限。
  • 背景信息 对象存储服务采用分块上传的模式上传数据,在下列情况下(但不仅限于此)通常会导致数据上传失败而产生垃圾数据,因此需要清理这些碎片数据来释放空间。 网络条件较差,与OBS 对象存储的服务器之间的连接经常断开。 上传过程中,人为中断上传任务。 设备故障。 突然断电等特殊情况。 碎片管理功能可以清除由于对象上传失败而产生的垃圾数据。 碎片删除后无法恢复,请确认所有多段上传任务都已经执行完毕,如果任务未执行完毕删除碎片可能导致该任务上传失败,请谨慎操作。
  • 定时上传是否采用增量 OBS Browser+的定时上传任务默认情况下采用的是增量上传,当周期开始时,OBS Browser+会扫描本地文件与桶中对应路径的对象进行对比,仅在对象不存在,或者对象大小与文件大小不一致,或者对象的最后修改时间早于文件的最后修改时间时才会进行上传。 需要注意的是,当修改已有任务的定时上传设置后,会重新创建任务,并覆盖掉原有任务,因此修改完成后第一次进行定时上传将采用全量上传的方式。 父主题: 常见问题
  • 定时上传 OBS Browser+ 提供强大的定时上传功能,您可以将本地磁盘或目录中的一个或多个文件周期性的上传到目标桶的对应路径下。 首先进入定时上传页面,单击“立即上传”,进入到“创建定时上传”页面。 然后选择目标桶类型、桶路径、本地上传对象,您还可以打开自动上传开关,设置上传周期策略。 单击“确定”后,OBS Browser+会在设定的周期开始时自动上传文件。 修改已有任务的定时上传设置后,会重新创建任务,并覆盖掉原有任务。 在比较每个本地文件与桶内对象差异时,会产生一次HEAD请求费用。 当周期开始时,OBS Browser+会扫描本地文件与桶中对应路径的对象进行对比,仅在对象不存在,或者对象大小与文件大小不一致,或者对象的最后修改时间早于文件的最后修改时间时才会进行上传。 父主题: 最佳实践
  • 生命周期管理简介 生命周期管理是指通过配置指定的规则,实现定时删除桶中的对象或者定时转换对象的存储类别。 生命周期管理可适用于以下典型场景: 周期性上传的日志文件,可能只需要保留一个星期或一个月。到期后要删除它们。 某些文档在一段时间内经常访问,但是超过一定时间后就可能不再访问了。这些文档需要在一定时间后转化为低频访问存储,归档存储或者删除。 对于上述场景中的对象,您可以定义用于识别这些对象的生命周期管理规则,通过这些规则实现对象的生命周期管理。 自动将某些不再频繁访问的对象转换归档存储或者是低频访问存储,可以减少您的租赁费用。此处的“转换”表示在不复制原对象的情况下修改对象的存储类别。您可以在对象页面手动修改对象的存储类别,详情请参见上传对象的相关操作,也可以通过配置生命周期规则转换对象的存储类别。 生命周期管理规则通常包含两个关键要素: 策略:即您可以指定对象名前缀来匹配受约束的对象,则匹配该前缀的对象将受规则影响;也可以指定将生命周期管理规则配置到整个桶,则桶内所有对象都将受规则影响。 时间:即您可以指定在对象最后一次更新后多少天,受规则影响的对象将转换为低频访问存储、归档存储或者过期并自动被OBS删除。 转换为低频访问存储:即您可以指定在对象最后一次更新后多少天,受规则影响的对象将转换为低频访问存储。 转换为归档存储:即您可以指定在对象最后一次更新后多少天,受规则影响的对象将转换为归档存储。 过期删除:即您可以指定在对象最后一次更新后多少天,受规则影响的对象将过期并自动被OBS删除。 转换为低频访问存储的时间最少设置为30天,如果同时设置转换为低频访问存储和转换为归档存储,则转换为归档存储的时间要比转换为低频访问存储的时间至少长30天,例如转换为低频访问存储设置为33天,则转换为归档存储至少需要设置为63天。如果单独设置转换为归档存储,则没有时间限制。过期时间必须大于前两个转换时间的最大值。 父主题: 生命周期管理
  • 操作步骤 登录OBS Browser+。 单击目标文件或文件夹所在的桶。 在对象管理页面右上角的搜索框中输入需要查找的文件或文件夹的前缀。 单击,如图1所示。 图1 搜索文件或文件夹 搜索到的文件或文件夹会显示到对象列表中。如果想重新搜索其他文件或文件夹,可单击输入框中的删除已输入的关键字后重新输入需要搜索的文件或文件夹名。 例如,您需要查找桶“mybucket”中前缀为“testobject”的文件或文件夹,则需先进入桶“mybucket”的对象管理页面,在对象管理页面右上角的搜索框中输入“testobject”并单击。前缀为“testobject”的文件或文件夹都会展示在对象列表中。
  • 桶ACL权限简介 访问控制列表(Access Control List,ACL)是一个指定被授权者和所授予权限的授权列表。 OBS桶和对象的ACL是基于账号的访问控制,默认情况下,创建桶和对象时会同步创建ACL,授权拥有者对桶和对象资源的完全控制权限。 OBS的ACL为了实现用户简单实用地授权,包含以下特点: ACL对租户和租户下的用户都生效。 桶和对象的拥有者相同时,设置桶上的ACL默认对桶及桶中对象都生效。 桶创建时可以携带ACL,也可以创建成功后设置ACL;对象上传时可以携带ACL,也可以上传成功后再单独设置。 OBS ACL是基于账号级别的读写权限控制,权限控制细粒度不如桶策略和IAM权限。一般情况下,建议使用IAM权限和桶策略进行访问控制。 OBS支持通过ACL对表1所示用户或用户组授予桶的访问权限。 表1 OBS支持的被授权用户 被授权用户 描述 特定用户 ACL支持通过账号授予桶/对象的访问权限。授予账号权限后,账号下所有具有OBS资源权限的IAM用户都可以拥有此桶/对象的访问权限。 当需要为不同IAM用户授予不同的权限时,可以通过桶策略配置。 拥有者 桶的拥有者是指创建桶的账号。桶拥有者默认拥有所有的桶访问权限,其中桶ACL的读取和写入这两种权限永远拥有,且不支持修改。 对象的拥有者是上传对象的账号,而不是对象所属的桶的拥有者。对象拥有者默认永远拥有对象读取权限、ACL的读取和写入权限,且不支持修改。 须知: 不建议修改桶拥有者对桶的读取和写入权限。 匿名用户 未注册华为云的普通访客。 须知: 开启匿名用户的桶/对象访问权限后,所有人都可以在不经过身份认证的情况下,对桶/对象进行访问。 桶ACL的访问权限如表2所示: 表2 桶ACL访问权限 权限 选项 描述 桶访问权限 读取权限 此权限可以获取该桶内对象列表和桶的元数据。 对象读权限 此权限可以获取该桶内对象的内容和对象的元数据。 写入权限 此权限可以上传、覆盖和删除该桶内任何对象。 ACL访问权限 读取权限 此权限可以获取对应的桶的权限控制列表。 桶的拥有者默认永远具有ACL的读取权限。 写入权限 此权限可以更新对应桶的权限控制列表。 桶的拥有者默认永远具有ACL的写入权限。 对象ACL的访问权限如表3所示: 表3 对象ACL访问权限 权限 选项 描述 对象访问权限 读取权限 此权限可以获取该对象内容和元数据。 ACL访问权限 读取权限 此权限可以获取对应的对象的权限控制列表。 对象的拥有者默认永远具有ACL的读取权限。 写入权限 此权限可以更新对象的权限控制列表。 对象的拥有者默认永远具有ACL的写入权限。 父主题: 桶ACL权限
  • OBS Browser+简介 OBS Browser+是一款用于访问和管理对象存储服务(Object Storage Service,OBS)的图形化工具,支持完善的桶管理和对象管理操作。OBS Browser+的图形化界面可以非常方便地让用户在本地对OBS进行管理,例如:创建桶、上传下载文件、浏览文件等。 OBS Browser+适用于Windows10,Windows Server2016以及Mac平台。各操作系统的规格要求如表1所示。您可以单击这里获取用于不同操作系统的OBS Browser+的下载地址和安装方法。 使用前请绑定支付方式,避免因费用问题导致受限。 表1 OBS Browser+对PC机的规格要求 规格项 规格要求 备注 操作系统 Windows 10 Pro 64-bit Windows Server 2016 standard 64-bit Mac OS X10.13.3 暂时不支持Linux平台,Windows用户建议使用Windows10及以上版本。 CPU 最低配置:双核1.6GHz CPU 标准配置:双核2.4GHz CPU 暂不支持ARM架构芯片。 内存 最低配置:4GB 内存 标准配置:8GB 内存 可用内存:≥512MB - 安装盘可用空间 ≥512MB 安装OBS Browser+所需的硬盘空间。 数据盘可用空间 ≥3GB 存放OBS Browser+数据库的数据文件所需的硬盘空间。
  • 兼容性 版本修订记录信息:ChangeLog。 推荐的浏览器版本: 完全支持HTML5的浏览器。 功能限制:不支持创建桶、列举桶、设置桶CORS配置。 接口函数:与旧版本(2.1.x)不完全兼容,接口变化如下表: 接口函数 变化说明 ObsClient.setBucketAcl 请求参数中Grants字段变为数组,去掉Grants.Grant字段。 ObsClient.getBucketAcl 响应结果中InterfaceResult.Grants字段变为数组,去掉InterfaceResult.Grants.Grant字段。 ObsClient.setObjectAcl 请求参数中Grants字段变为数组,去掉Grants.Grant字段。 ObsClient.getObjectAcl 响应结果中InterfaceResult.Grants字段变为数组,去掉InterfaceResult.Grants.Grant字段。 ObsClient.setBucketLogging 请求参数中LoggingEnabled.TargetGrants字段变为数组,去掉LoggingEnabled.TargetGrants.Grant字段。 ObsClient.getBucketLogging 响应结果中InterfaceResult.LoggingEnabled.TargetGrants字段变为数组,去掉InterfaceResult.LoggingEnabled.TargetGrants.Grant字段。 ObsClient.setBucketWebsite 请求参数中RoutingRules字段变为数组,去掉RoutingRules.RoutingRule字段。 ObsClient.getBucketWebsite 响应结果中InterfaceResult.RoutingRules字段变为数组,去掉InterfaceResult.RoutingRules.RoutingRule字段。 ObsClient.getBucketCors 响应结果中InterfaceResult.CorsRule字段改名为InterfaceResult.CorsRules。 ObsClient.setBucketTagging 请求参数中TagSet字段改名为Tags并变为数组,去掉TagSet.Tag字段。 ObsClient.getBucketTagging 响应结果中InterfaceResult.TagSet字段改名为Tags并变为数组,去掉InterfaceResult.TagSet.Tag字段。
  • 使用npm命令下载安装 运行npm -v命令查看npm版本并确保npm已安装。 运行npm install esdk-obs-browserjs命令执行安装。 如果您使用的是Windows操作系统,当运行npm命令时提示“不是内部或外部命令”,请在Path环境变量中增加npm的安装目录(一般为Node.js的安装目录)。 您可能需要重启电脑使环境变量生效。 如果您使用npm安装依赖时出现网络错误,请使用代理。
  • 限定条件复制 复制对象时,可以指定一个或多个限定条件,满足限定条件时则进行复制,否则返回异常码,复制对象失败。 您可以使用的限定条件如下: 参数 作用 格式 CopySourceIfModifiedSince 如果源对象在指定的时间后有修改,则进行复制,否则抛出异常。 符合http://www.ietf.org/rfc/rfc2616.txt规定格式的HTTP时间字符串。 CopySourceIfUnmodifiedSince 如果源对象在指定的时间后没有修改,则进行复制,否则抛出异常。 符合http://www.ietf.org/rfc/rfc2616.txt规定格式的HTTP时间字符串。 CopySourceIfMatch 如果源对象的ETag值与该参数值相同,则进行复制,否则返回异常码。 字符串。 CopySourceIfNoneMatch 如果源对象的ETag值与该参数值不相同,则进行复制,否则返回异常码。 字符串。
  • HTTP状态码 OBS服务端遵照HTTP规范,在接口调用完成均会返回标准的HTTP状态码,HTTP状态码分类以及OBS中常见的HTTP状态码如下: HTTP状态码分类: 分类 分类描述 1XX 信息,服务器收到请求,需要请求者继续执行操作,一般对客户调用函数不可见。 2XX 成功,操作被成功接收并处理。 3XX 重定向,需要进一步的操作以完成请求。 4XX 客户端错误,请求包含语法错误或无法完成请求。 5XX 服务器错误,服务器在处理请求的过程中发生了错误 OBS中常见的HTTP状态码及其含义: HTTP状态码 描述 常见原因 400 Bad Request 请求参数错误 请求参数不合法; 客户端携带MD5请求后一致性校验失败; 无效的参数(使用SDK时传递了不合法的参数); 无效的桶名(使用了不合法的桶名); 403 Forbidden 拒绝访问 请求的签名不匹配(一般是AK/SK错误); 权限不足(账号对请求的资源无权限); 账号欠费; 桶的空间不足(出现在对桶设置了配额的场景); 无效的AK; 客户端时间和服务端时间相差过大(客户端所在机器的时间与NTP服务不同步); 404 Not Found 请求的资源不存在 桶不存在; 对象不存在; 桶的策略配置不存在(桶CORS配置不存在、桶Policy配置不存在等); 分段上传任务不存在; 405 Method Not Allowed 请求的方法不支持 请求的方法/特性未在该桶所在的区域上线 408 Request Timeout 请求超时 服务端与客户端Socket连接超时 409 Conflict 请求冲突 在不同区域重复创建桶名桶; 尝试删除非空桶; 500 Internal Server Error 服务端内部错误 服务端内部错误 503 Service Unavaliable 服务不可用 服务端暂时不可访问 父主题: 异常处理
  • OBS服务端错误码 在向OBS服务端发出请求后,如果遇到错误,会在响应中包含响应的错误码描述错误信息。详细的错误码及其对应的描述和HTTP状态码见下表: HTTP状态码 错误码 错误信息 处理措施 301 Moved Permanently PermanentRedirect 尝试访问的桶必须使用指定的地址,请将以后的请求发送到这个地址。 按照返回的重定向地址发送请求。 301 Moved Permanently WebsiteRedirect Website请求缺少bucketName。 携带桶名后重试。 307 Moved Temporarily TemporaryRedirect 临时重定向,当DNS更新时,请求将被重定向到桶。 会自动重定向,也可以将请求发送到重定向地址。 400 Bad Request BadDigest 客户端指定的对象内容的MD5值与系统接收到的内容MD5值不一致。 检查头域中携带的MD5与消息体计算出来的MD5是否一致。 400 Bad Request BadDomainName 域名不合法。 使用合法的域名。 400 Bad Request BadRequest 请求参数不合法。 根据返回的错误消息体提示进行修改。 400 Bad Request CustomDomainAreadyExist 配置了已存在的域。 已经配置过了,不需要再配置。 400 Bad Request CustomDomainNotExist 删除不存在的域。 未配置或已经删除,无需删除。 400 Bad Request EntityTooLarge 用户POST上传的对象大小超过了条件允许的最大大小。 修改POST上传的policy中的条件或者减少对象大小。 400 Bad Request EntityTooSmall 用户POST上传的对象大小小于条件允许的最小大小。 修改POST上传的policy中的条件或者增加对象大小。 400 Bad Request IllegalLocationConstraintException 用户未带Location在非默认Region创桶。 请求发往默认Region创桶或带非默认Region的Location创桶。 400 Bad Request IncompleteBody 由于网络原因或其他问题导致请求体未接受完整。 重新上传对象。 400 Bad Request IncorrectNumberOfFilesInPost Request 每个POST请求都需要带一个上传的文件。 带上一个上传文件。 400 Bad Request InvalidArgument 无效的参数。 根据返回的错误消息体提示进行修改。 400 Bad Request InvalidBucket 请求访问的桶已不存在。 更换桶名。 400 Bad Request InvalidBucketName 请求中指定的桶名无效,超长或带不允许的特殊字符。 更换桶名。 400 Bad Request InvalidEncryptionAlgorithmError 错误的加密算法。下载SSE-C加密的对象,携带的加密头域错误,导致不能解密。 携带正确的加密头域下载对象。 400 Bad Request InvalidLocationConstraint 创建桶时,指定的Location不合法或不存在。 指定正确的Location创桶。 400 Bad Request InvalidPart 一个或多个指定的段无法找到。这些段可能没有上传,或者指定的entity tag与段的entity tag不一致。 按照正确的段和entity tag合并段。 400 Bad Request InvalidPartOrder 段列表的顺序不是升序,段列表必须按段号升序排列。 按段号升序排列后重新合并。 400 Bad Request InvalidPolicyDocument 表单中的内容与策略文档中指定的条件不一致。 根据返回的错误消息体提示修改构造表单的policy重试。 400 Bad Request InvalidRedirectLocation 无效的重定向地址。 指定正确的地址。 400 Bad Request InvalidRequest 无效请求。 根据返回的错误消息体提示进行修改。 400 Bad Request InvalidRequestBody 请求体无效,需要消息体的请求没有上传消息体。 按照正确的格式上传消息体。 400 Bad Request InvalidTargetBucketForLogging delivery group对目标桶无ACL权限。 对目标桶配置ACL权限后重试。 400 Bad Request KeyTooLongError 提供的Key过长。 使用较短的Key。 400 Bad Request KMS.DisabledException SSE-KMS加密方式下,主密钥被禁用。 更换密钥后重试,或联系技术支持。 400 Bad Request KMS.NotFoundException SSE-KMS加密方式下,主密钥不存在。 携带正确的主密钥重试。 400 Bad Request MalformedACLError 提供的XML格式错误,或者不符合我们要求的格式。 使用正确的XML格式重试。 400 Bad Request MalformedError 请求中携带的XML格式不正确。 使用正确的XML格式重试。 400 Bad Request MalformedLoggingStatus Logging的XML格式不正确。 使用正确的XML格式重试。 400 Bad Request MalformedPolicy Bucket policy检查不通过。 根据返回的错误消息体提示结合桶policy的要求进行修改。 400 Bad Request MalformedQuotaError Quota的XML格式不正确。 使用正确的XML格式重试。 400 Bad Request MalformedXML 当用户发送了一个配置项的错误格式的XML会出现这样的错误。 使用正确的XML格式重试。 400 Bad Request MaxMessageLengthExceeded 拷贝对象,带请求消息体。 拷贝对象不带消息体重试。 400 Bad Request MetadataTooLarge 元数据消息头超过了允许的最大元数据大小。 减少元数据消息头。 400 Bad Request MissingRegion 请求中缺少Region信息,且系统无默认Region。 请求中携带Region信息。 400 Bad Request MissingRequestBodyError 当用户发送一个空的XML文档作为请求时会发生。 提供正确的XML文档。 400 Bad Request MissingRequiredHeader 请求中缺少必要的头域。 提供必要的头域。 400 Bad Request MissingSecurityHeader 请求缺少一个必须的头。 提供必要的头域。 400 Bad Request TooManyBuckets 用户拥有的桶的数量达到了系统的上限,并且请求试图创建一个新桶。 删除部分桶后重试。 400 Bad Request TooManyCustomDomains 配置了过多的用户域 删除部分用户域后重试。 400 Bad Request TooManyWrongSignature 因高频错误请求被拒绝服务。 更换正确的Access Key后重试。 400 Bad Request UnexpectedContent 该请求需要消息体而客户端没带,或该请求不需要消息体而客户端带了。 根据说明重试。 400 Bad Request UserKeyMustBeSpecified 该操作只有特殊用户可使用。 请联系技术支持。 403 Forbidden AccessDenied 拒绝访问,请求没有携带日期头域或者头域格式错误。 请求携带正确的日期头域。 403 Forbidden AccessForbidden 权限不足,桶未配置CORS或者CORS规则不匹配。 修改桶的CORS配置,或者根据桶的CORS配置发送匹配的OPTIONS请求。 403 Forbidden AllAccessDisabled 用户无权限执行某操作。桶名为禁用关键字。 更换桶名。 403 Forbidden DeregisterUserId 用户已经注销。 充值或重新开户。 403 Forbidden InArrearOrInsufficientBalance 用户欠费或余额不足而没有权限进行某种操作。 充值。 403 Forbidden InsufficientStorageSpace 存储空间不足。 超过配额限制,增加配额或删除部分对象。 403 Forbidden InvalidAccessKeyId 系统记录中不存在客户提供的Access Key Id。 携带正确的Access Key Id。 403 Forbidden NotSignedUp 你的账户还没有在系统中注册,必须先在系统中注册了才能使用该账户。 先注册OBS服务。 403 Forbidden RequestTimeTooSkewed 请求的时间与服务器的时间相差太大。 检查客户端时间是否与当前时间相差太大。 403 Forbidden SignatureDoesNotMatch 请求中带的签名与系统计算得到的签名不一致。 检查你的Secret Access Key和签名计算方法。 403 Forbidden Unauthorized 用户未实名认证。 请实名认证后重试。 404 Not Found NoSuchBucket 指定的桶不存在。 先创桶再操作。 404 Not Found NoSuchBucketPolicy 桶policy不存在。 先配置桶policy。 404 Not Found NoSuchCORSConfiguration CORS配置不存在。 先配置CORS。 404 Not Found NoSuchCustomDomain 请求的用户域不存在。 先设置用户域。 404 Not Found NoSuchKey 指定的Key不存在。 先上传对象。 404 Not Found NoSuchLifecycleConfiguration 请求的LifeCycle不存在。 先配置LifeCycle。 404 Not Found NoSuchUpload 指定的多段上传不存在。Upload ID不存在,或者多段上传已经终止或完成。 使用存在的段或重新初始化段。 404 Not Found NoSuchVersion 请求中指定的version ID与现存的所有版本都不匹配。 使用正确的version ID。 404 Not Found NoSuchWebsiteConfiguration 请求的Website不存在。 先配置Website。 405 Method Not Allowed MethodNotAllowed 指定的方法不允许操作在请求的资源上。 对应返回的Message为:Specified method is not supported. 方法不允许。 408 Request Timeout RequestTimeout 用户与Server之间的socket连接在超时时间内没有进行读写操作。 检查网络后重试,或联系技术支持。 409 Conflict BucketAlreadyExists 请求的桶名已经存在。桶的命名空间是系统中所有用户共用的,选择一个不同的桶名再重试一次。 更换桶名。 409 Conflict BucketAlreadyOwnedByYou 发起该请求的用户已经创建过了这个名字的桶,并拥有这个桶。 不需要再创桶了。 409 Conflict BucketNotEmpty 用户尝试删除的桶不为空。 先删除桶中对象,然后再删桶。 409 Conflict InvalidBucketState 无效的桶状态,配置跨Region复制后不允许关闭桶多版本。 不关闭桶的多版本或取消跨Region复制。 409 Conflict OperationAborted 另外一个冲突的操作当前正作用在这个资源上,请重试。 等待一段时间后重试。 409 Conflict ServiceNotSupported 请求的方法服务端不支持。 服务端不支持,请联系技术支持。 411 Length Required MissingContentLength 必须要提供HTTP消息头中的Content-Length字段。 提供Content-Length消息头。 412 Precondition Failed PreconditionFailed 用户指定的先决条件中至少有一项没有包含。 根据返回消息体中的Condition提示进行修改。 416 Client Requested Range Not Satisfiable InvalidRange 请求的range不可获得。 携带正确的range重试。 500 Internal Server Error InternalError 系统遇到内部错误,请重试。 请联系技术支持。 501 Not Implemented ServiceNotImplemented 请求的方法服务端没有实现。 当前不支持,请联系技术支持。 503 Service Unavailable ServiceUnavailable 服务器过载或者内部错误异常。 等待一段时间后重试,或联系技术支持。 503 Service Unavailable SlowDown 请降低请求频率。 请降低请求频率。 父主题: 异常处理
  • AMD规范创建 永久访问密钥(AK/SK)创建OBS客户端代码如下: // 引入AMD,通过依赖注入的构造函数创建ObsClient实例 var obsClient; define(['ObsClient'], function(ObsClient){ obsClient = new ObsClient({ // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 前端本身没有process对象,可以使用webpack类打包工具定义环境变量,就可以在代码中运行了。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html access_key_id: process.env.AccessKeyID, secret_access_key: process.env.SecretAccessKey, // 这里以华北-北京四为例,其他地区请按实际情况填写 server: 'https://obs.cn-north-4.myhuaweicloud.com' }); // 使用访问OBS }); 临时访问密钥(AK/SK/SecurityToken)创建OBS客户端代码如下: // 引入AMD,通过依赖注入的构造函数创建ObsClient实例 var obsClient; define(['ObsClient'], function(ObsClient){ obsClient = new ObsClient({ // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID、SecretAccessKey和SecurityToken // 前端本身没有process对象,可以使用webpack类打包工具定义环境变量,就可以在代码中运行了。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html access_key_id: process.env.AccessKeyID, secret_access_key: process.env.SecretAccessKey, security_token: process.env.SecurityToken, // 这里以华北-北京四为例,其他地区请按实际情况填写 server: 'https://obs.cn-north-4.myhuaweicloud.com' }); // 使用访问OBS });
  • 直接创建 永久访问密钥(AK/SK)创建OBS客户端代码如下: // 未引入AMD,直接通过构造函数创建ObsClient实例 var obsClient = new ObsClient({ // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 前端本身没有process对象,可以使用webpack类打包工具定义环境变量,就可以在代码中运行了。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html access_key_id: process.env.AccessKeyID, secret_access_key: process.env.SecretAccessKey, // 这里以华北-北京四为例,其他地区请按实际情况填写 server: 'https://obs.cn-north-4.myhuaweicloud.com' }); // 使用访问OBS
  • 使用前须知 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 使用OBS BrowserJS SDK访问桶前,必须配置桶的CORS。 请确认您已经熟悉OBS的基本概念,如桶(Bucket)、对象(Object)、访问密钥(AK和SK)等。 您可以先参考OBS客户端通用示例,了解OBS BrowserJS SDK接口调用的通用方式。 OBS客户端支持回调函数和Promise对象两种方式返回调用结果。 当前各区域特性开放不一致,部分特性只在部分区域开放,使用过程中如果接口HTTP状态码为405,请确认该区域是否支持该功能特性。
  • 对象上传简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 在OBS中,用户操作的基本数据单元是对象。OBS BrowserJS SDK提供了丰富的对象上传接口,可以通过以下方式上传对象: 文本上传 文件上传 分段上传 追加上传 基于表单上传 SDK支持上传0KB~5GB的对象。文件上传的内容大小不能超过5GB;当上传较大文件时,请使用分段上传,分段上传每段内容大小不能超过5GB;基于表单上传提供了基于浏览器表单上传对象的方式。 如果上传的对象权限设置为匿名用户读取权限,对象上传成功后,匿名用户可通过链接地址访问该对象数据。对象链接地址格式为:https://桶名.域名/文件夹目录层级/对象名。如果该对象存在于桶的根目录下,则链接地址将不需要有文件夹目录层级。 父主题: 上传对象
  • 日志内容格式 SDK日志格式为:日志时间|日志级别|调用接口|日志内容。示例如下: 2018/2/11 下午9:22:45|info|ListObjects|enter ListObjects... 2018/2/11 下午9:22:45|info|ListObjects|prepare request parameters ok,then Send request to service start 2018/2/11 下午9:22:45|info|ListObjects|http cost 19 ms 2018/2/11 下午9:22:45|info|ListObjects|get response start, statusCode:200
  • 日志配置 OBS BrowserJS SDK提供了日志功能,您可以通过ObsClient.initLog开启日志功能并进行配置。示例代码如下: // 创建ObsClient实例 var obsClient = new ObsClient({ // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 前端本身没有process对象,可以使用webpack类打包工具定义环境变量,就可以在代码中运行了。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html access_key_id: process.env.AccessKeyID, secret_access_key: process.env.SecretAccessKey, // 这里以华北-北京四为例,其他地区请按实际情况填写 server: 'https://obs.cn-north-4.myhuaweicloud.com' }); obsClient.initLog({ level:'warn', // 配置日志级别 }); SDK打印的日志均显示在浏览器提供的 开发者工具 的Console中。 日志功能默认是关闭的,需要主动开启。
共100000条