华为云用户手册

  • 加密说明(Node.js SDK) 开发过程中,您有任何问题可以在github上提交issue,或者在华为云 对象存储服务 论坛中发帖求助。 OBS Node.js SDK支持服务端加密的接口见下表: OBS Node.js SDK接口方法 描述 支持加密类型 ObsClient.putObject 上传对象时设置加密算法、密钥,对对象启用服务端加密。 SSE-KMS SSE-C ObsClient.appendObject 追加上传对象时设置加密算法、密钥,对对象启用服务端加密。 SSE-KMS SSE-C ObsClient.getObject 下载对象时设置解密算法、密钥,用于解密对象。 SSE-C ObsClient.copyObject 复制对象时设置源对象的解密算法、密钥,用于解密源对象。 复制对象时设置目标对象的加密算法、密钥,对目标对象启用加密算法。 SSE-KMS SSE-C ObsClient.getObjectMetadata 获取对象元数据时设置解密算法、密钥,用于解密对象。 SSE-C ObsClient.initiateMultipartUpload 初始化分段上传任务时设置加密算法、密钥,对分段上传任务最终生成的对象启用服务端加密。 SSE-KMS SSE-C ObsClient.uploadPart 上传段时设置加密算法、密钥,对分段数据启用服务端加密。 SSE-C ObsClient.copyPart 复制段时设置源对象的解密算法、密钥,用于解密源对象。 复制段时设置目标段的加密算法、密钥,对目标段启用加密算法。 SSE-C OBS Node.js SDK两种加密方式支持的请求参数: 加密类型 OBS Node.js SDK对应请求参数 说明 SSE-KMS SseKms 表示服务端加密是SSE-KMS方式,目前仅支持:kms。 SseKmsKey 表示SSE-KMS方式下的主密钥,可为空。 SSE-C SseC 表示服务端加密是SSE-C方式,目前仅支持:AES256。 SseCKey 表示SSE-C方式下的密钥,由AES256算法得到。上传对象时作为加密密钥;下载对象时作为解密密钥。 CopySourceSseC 适用于ObsClient.copyObject和ObsClient.copyPart,表示以SSE-C方式解密源对象,目前仅支持:AES256。 CopySourceSseCKey 适用于ObsClient.copyObject和ObsClient.copyPart,表示以SSE-C方式解密源对象时使用的密钥,由AES256算法得到。 父主题: 服务端加密(Node.js SDK)
  • 功能介绍 跨域资源共享(Cross Origin Resource Sharing,CORS)是由W3C标准化组织提出的一种网络浏览器的规范机制,定义了一个域中加载的客户端Web应用程序与另一个域中的资源交互的方式。而在通常的网页请求中,由于同源安全策略(Same Origin Policy,SOP)的存在,不同域之间的网站脚本和内容是无法进行交互的。OBS支持CORS规范,允许跨域请求访问OBS中的资源。 调用获取桶的CORS配置接口,您可获取指定桶的跨域资源共享规则。
  • 请求参数 表1 BucketRequestInput 参数名称 参数类型 是否必选 描述 Bucket string 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 取值范围: 长度为3~63个字符。 默认取值: 无
  • 接口约束 您必须是桶拥有者或拥有获取桶的CORS配置的权限,才能获取桶的CORS配置。建议使用 IAM 或桶策略进行授权,如果使用IAM则需授予obs:bucket:GetBucketCORS权限,如果使用桶策略则需授予GetBucketCORS权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。
  • 返回结果 表2 返回结果 参数类型 描述 表3 说明: 该接口返回是一个Promise类型,需要使用Promise、async/await语法处理。 参数解释: 接口返回信息,详见表3。 表3 Response 参数名称 参数类型 描述 CommonMsg ICommonMsg 参数解释: 接口调用完成后的公共信息,包含HTTP状态码,操作失败的错误码等,详见ICommonMsg。 InterfaceResult 表5 参数解释: 操作成功后的结果数据,详见表5。 约束限制: 当Status大于300时为空。 表4 ICommonMsg 参数名称 参数类型 描述 Status number 参数解释: OBS服务端返回的HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 Code string 参数解释: OBS服务端返回的错误码。 Message string 参数解释: OBS服务端返回的错误描述。 HostId string 参数解释: OBS服务端返回的请求服务端ID。 RequestId string 参数解释: OBS服务端返回的请求ID。 Id2 string 参数解释: OBS服务端返回的请求ID2。 Indicator string 参数解释: OBS服务端返回的详细错误码。 表5 BaseResponseOutput 参数名称 参数类型 描述 RequestId string 参数解释: OBS服务端返回的请求ID。
  • 接口约束 您必须是桶拥有者或拥有删除桶的生命周期配置的权限,才能删除桶的生命周配置。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:PutLifecycleConfiguration权限,如果使用桶策略则需授予PutLifecycleConfiguration权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。
  • 请求参数 表1 BucketRequestInput 参数名称 参数类型 是否必选 描述 Bucket string 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 取值范围: 长度为3~63个字符。 默认取值: 无
  • 功能说明 如果用户上传完所有的段,就可以调用合并段接口,系统将在服务端将用户指定的段合并成一个完整的对象。在执行“合并段”操作以前,用户不能下载已经上传的数据。在合并段时需要将多段上传任务初始化时记录的附加消息头信息复制到对象元数据中,其处理过程和普通上传对象带这些消息头的处理过程相同。在并发合并段的情况下,仍然遵循Last Write Win策略,但“Last Write”的时间定义为段任务的初始化时间。 已经上传的段,只要没有取消对应的多段上传任务,都要占用用户的容量配额;对应的多段上传任务“合并段”操作完成后,只有指定的多段数据占用容量配额,用户上传的其他此多段任务对应的段数据如果没有包含在“合并段”操作指定的段列表中,“合并段”完成后系统将删除多余的段数据,且同时释放容量配额。 合并段时,OBS通过按升序的段编号规范化多段来创建对象。如果在初始化上传段任务中提供了任何对象元数据,则OBS会将该元数据与对象相关联。成功完成请求后,段将不再存在。合并段请求必须包括上传ID以及段编号和相应的ETag值的列表。OBS响应包括可唯一地识别组合对象数据的ETag。此ETag无需成为对象数据的MD5哈希。
  • 请求参数 表1 请求参数列表 参数名称 参数类型 是否必选 描述 Bucket string 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 取值范围: 长度为3~63个字符。 默认取值: 无 Key string 必选 参数解释: 对象名。对象名是对象在存储桶中的唯一标识。对象名是对象在桶中的完整路径,路径中不包含桶名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4.myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 约束限制: 无 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无 UploadId string 必选 参数解释: 分段上传任务的ID。任务ID可以通过初始化分段上传任务生成。 约束限制: 无 取值范围: 长度为32的字符串,例如:000001648453845DBB78F2340DD460D8。 默认取值: 无 Parts Part[] 必选 参数解释: 待合并的段列表。详情参见Part。 EncodingType string 可选 参数解释: 对响应中的Key进行指定类型的编码。如果Key包含xml 1.0标准不支持的控制字符,可通过设置该参数对响应中的Key进行编码。 取值范围: 可选值为url。 默认取值: 无,不设置则不编码。 表2 Part 参数名称 参数类型 描述 PartNumber number 参数解释: 段号。 约束限制: 无 取值范围: 取值范围是[1,10000]的非负整数。 默认取值: 无 ETag string 参数解释: 段的ETag值。分段的base64编码的128位MD5摘要。 约束限制: 通过上传段请求可以收到服务端返回的ETag值(段数据的MD5值)返回给用户。 取值范围: 长度为32的字符串。 默认取值: 无
  • 返回结果 表3 返回结果 参数类型 描述 表4 说明: 该接口返回是一个Promise类型,需要使用Promise、async/await语法处理。 参数解释: 接口返回信息,详见表4。 表4 Response 参数名称 参数类型 描述 CommonMsg ICommonMsg 参数解释: 接口调用完成后的公共信息,包含HTTP状态码,操作失败的错误码等,详见ICommonMsg。 InterfaceResult 表6 参数解释: 操作成功后的结果数据,详见表6。 约束限制: 当Status大于300时为空。 表5 ICommonMsg 参数名称 参数类型 描述 Status number 参数解释: OBS服务端返回的HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 Code string 参数解释: OBS服务端返回的错误码。 Message string 参数解释: OBS服务端返回的错误描述。 HostId string 参数解释: OBS服务端返回的请求服务端ID。 RequestId string 参数解释: OBS服务端返回的请求ID。 Id2 string 参数解释: OBS服务端返回的请求ID2。 Indicator string 参数解释: OBS服务端返回的详细错误码。 表6 CompleteMultipartUploadOutput 参数名称 参数类型 描述 RequestId string 参数解释: OBS服务端返回的请求ID。 ETag string 参数解释: 合并段后根据各个段的ETag值计算出的结果。对象的base64编码的128位MD5摘要。ETag是对象内容的唯一标识,可以通过该值识别对象内容是否有变化。比如上传对象时ETag为A,下载对象时ETag为B,则说明对象内容发生了变化。ETag只反映变化的内容,而不是其元数据。上传的对象或复制操作创建的对象,都有唯一的ETag。 约束限制: 当对象是服务端加密的对象时,ETag值不是对象的MD5值。 Bucket string 参数解释: 合并段所在的桶名。 Key string 参数解释: 对象名。对象名是对象在存储桶中的唯一标识。对象名是对象在桶中的完整路径,路径中不包含桶名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4.myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 Location string 参数解释: 合并段后得到的对象的url。 例如:https://example-Bucket.obs.regions.myhuaweicloud.com/example-Object VersionId string 参数解释: 合并段后得到的对象版本号。如果桶的多版本状态为开启,则会返回对象的版本号。 SseKms string 参数解释: 表示服务端加密是SSE-KMS方式。对象使用SSE-KMS方式加密。 SseKmsKey string 参数解释: SSE-KMS加密方式下使用的KMS主密钥的ID值。 SseC string 参数解释: 表示服务端加密是SSE-C方式。对象使用SSE-C加密方式。 SseCKeyMd5 string 参数解释: SSE-C方式下加密使用密钥的MD5值,该值用于验证密钥传输过程中是否出错。 约束限制: 由密钥值经过MD5加密再经过Base64编码后得到,示例:4XvB3tbNTN+tIEVa0/fGaQ== EncodingType string 参数解释: 用于指定对响应中的Key进行指定类型的编码。如果Key包含xml 1.0标准不支持的控制字符,可通过设置该参数对响应中的Key进行编码。 取值范围: 可选值为url。 默认取值: 无,不设置则不编码。
  • 接口约束 您必须是桶拥有者或拥有合并段的权限,才能合并段。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:object:PutObject权限,如果使用桶策略则需授予PutObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。 如果上传了10个段,但合并时只选择了9个段进行合并,那么未被合并的段将会被系统自动删除,未被合并的段删除后不能恢复。在进行合并之前请使用列出已上传的段接口进行查询,仔细核对所有段,确保没有段被遗漏。 如果最后一个段之外的其它段尺寸过小(小于100KB),OBS返回400 Bad Request。
  • 获取账号、IAM用户、项目的名称和ID 从控制台获取账号名、账号ID、用户名、用户ID、项目名称、项目ID 在华为云首页右上角,单击“控制台”。 在右上角的用户名中选择“我的凭证”。 图1 进入我的凭证 在“我的凭证”界面,API凭证页签中,查看账号名、账号ID、用户名、用户ID、项目名称、项目ID。 每个区域的项目ID有所不同,需要根据业务所在的区域获取对应的项目ID。 图2 查看账号名、账号ID、用户名、用户ID、项目名称、项目ID 调用API获取用户ID、项目ID 获取用户ID请参考:管理员查询IAM用户列表。 获取项目ID请参考:查询指定条件下的项目列表。
  • 签名不匹配异常(Node.js SDK) 异常说明:如果从返回结果的CommonMsg.Status中获取到的HTTP状态码为403,CommonMsg.Code中获取到的OBS服务端错误码为SignatureDoesNotMatch。 解决方案: 检查endpoint:是否在endpoint前多加了桶名,这个也会报签名不匹配错误。 检查AK、SK:请确保AK、SK输入正确,成对匹配,且与请求所用AK、SK保持一致。 检查StringToSign: StringToSign的构造规则: HTTP-Verb + "\n" + Content-MD5 + "\n" + Content-Type + "\n" + Date + "\n" + CanonicalizedHeaders + CanonicalizedResource 父主题: 异常处理(Node.js SDK)
  • 创建桶(Node.js SDK) 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。 桶是OBS全局命名空间,相当于数据的容器、文件系统的根目录,可以存储若干对象。以下代码展示如何新建一个桶: 桶的名字是全局唯一的,所以您需要确保不与已有的桶名称重复。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用类IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 更多创建桶的信息,请参见创建桶。 父主题: 快速入门(Node.js SDK)
  • 使用npm安装(推荐) 运行npm -v命令查看npm版本并确保npm已安装。 运行npm install esdk-obs-nodejs命令执行安装。 如果您使用的是Windows操作系统,当运行npm命令时提示“不是内部或外部命令”,请在Path环境变量中增加npm的安装目录(一般为Node.js的安装目录)。 您可能需要重启电脑使环境变量生效。 如果您使用npm安装依赖时出现网络错误,请使用代理。
  • 日志配置 OBS Node.js SDK基于log4js开源库提供了日志功能,您可以通过ObsClient.initLog开启日志功能并进行配置。代码示例如下: obsClient.initLog({ name: 'test', // 日志名称 file_full_path:'./logs/OBS-SDK.log', // 配置日志文件路径 max_log_size:20480, // 配置日志文件大小,单位:字节 backups:10, // 配置最大可保留的日志文件个数 level:'warn', // 配置日志级别 log_to_console:true // 配置是否将日志打印到console}); 日志功能默认是关闭的,需要主动开启。 使用file_full_path参数配置日志文件路径,可配置相对路径或绝对路径。
  • 日志级别 当系统出现问题需要定位且当前的日志无法满足要求时,可以通过修改日志的级别来获取更多的信息。其中debug日志信息最丰富,error日志信息最少。 具体说明如下: debug:调试级别,如果设置为这个级别,将打印SDK记录的所有日志。 info:信息级别,如果设置为这个级别,除了打印warn级别的信息外,还将打印HTTP/HTTPS请求的耗时时间等信息。 warn:告警级别,如果设置为这个级别,除了打印error级别的信息外,还将打印一些关键事件的信息。 error:错误级别,如果设置为这个级别,仅打印发生异常时的错误信息。
  • 日志内容格式 SDK日志格式为:日志时间|日志级别|调用接口|日志内容。示例如下: 2017/10/12 10:21:05 666|INFO |ListBuckets|enter ListBuckets...2017/10/12 10:21:05 672|INFO |ListBuckets|prepare request parameters ok,then Send request to service start2017/10/12 10:21:05 715|INFO |ListBuckets|2017-10-12 10:21:05|http cost 34 ms|0|2017/10/12 10:21:05 716|INFO |ListBuckets|get response start, statusCode:200
  • 配置SDK日志(Node.js SDK) 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。 OBS Node.js SDK基于log4js开源库提供了日志功能,您可以通过ObsClient.initLog开启日志功能并进行配置。代码示例如下: obsClient.initLog({ file_full_path:'./logs/OBS-SDK.log', // 配置日志文件路径 max_log_size:20480, // 配置日志文件大小,单位:字节 backups:10, // 配置最大可保留的日志文件个数 level:'warn', // 配置日志级别 log_to_console:true // 配置是否将日志打印到console}); 日志功能默认是关闭的,需要主动开启。 您可以从 日志分析 章节获取更多关于SDK日志的信息。 父主题: 初始化(Node.js SDK)
  • 配置密钥(Node.js SDK) 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。 要接入OBS服务,您需要拥有一组有效的访问密钥(AK和SK)用来进行签名认证。具体可参考OBS服务环境搭建。 获取AK和SK之后,可以通过创建OBS客户端,调用SDK接口。 获取AK和SK之后,您便可以按照以下步骤进行初始化。 创建OBS客户端(Node.js SDK) 配置OBS客户端(Node.js SDK) 配置SDK日志(Node.js SDK) 配置SDK代理(Node.js SDK) 父主题: 初始化(Node.js SDK)
  • 通过构造函数创建 永久访问密钥(AK/SK)创建OBS客户端代码如下: // 引入obs库// 使用npm安装const ObsClient = require("esdk-obs-nodejs");// 使用源码安装// var ObsClient = require('./lib/obs');// 创建ObsClient实例const obsClient = new ObsClient({ // 推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html access_key_id: process.env.AC CES S_KEY_ID, secret_access_key: process.env.SECRET_ACCESS_KEY, // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写 server: "https://obs.cn-north-4.myhuaweicloud.com",});// 使用访问OBS// 关闭obsClient// obsClient.close(); 临时访问密钥(AK/SK/SecurityToken)创建OBS客户端代码如下: // 引入obs库// 使用npm安装const ObsClient = require("esdk-obs-nodejs");// 使用源码安装// var ObsClient = require('./lib/obs');// 创建ObsClient实例const obsClient = new ObsClient({ // 推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html access_key_id: process.env.ACCESS_KEY_ID, secret_access_key: process.env.SECRET_ACCESS_KEY, // 如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入 security_token: process.env.SECURITY_TOKEN, // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写 server: "https://obs.cn-north-4.myhuaweicloud.com",});// 使用访问OBS// 关闭obsClient// obsClient.close();
  • 通过工厂方法创建 永久访问密钥(AK/SK)创建OBS客户端代码如下: // 引入obs库// 使用npm安装var ObsClient = require('esdk-obs-nodejs');// 使用源码安装// var ObsClient = require('./lib/obs');// 通过工厂方法初始化ObsClient实例var obsClient = new ObsClient();obsClient.factory({ // 推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html access_key_id: process.env.ACCESS_KEY_ID, secret_access_key: process.env.SECRET_ACCESS_KEY, // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写 server: "https://obs.cn-north-4.myhuaweicloud.com",});// 使用访问OBS// 关闭obsClient// obsClient.close(); 临时访问密钥(AK/SK/SecurityToken)创建OBS客户端代码如下: // 引入obs库// 使用npm安装var ObsClient = require('esdk-obs-nodejs');// 使用源码安装// var ObsClient = require('./lib/obs');// 通过工厂方法初始化ObsClient实例var obsClient = new ObsClient();obsClient.factory({ // 推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html access_key_id: process.env.ACCESS_KEY_ID, secret_access_key: process.env.SECRET_ACCESS_KEY, // 如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入 security_token: process.env.SECURITY_TOKEN, // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写 server: "https://obs.cn-north-4.myhuaweicloud.com",});// 使用访问OBS// 关闭obsClient// obsClient.close(); 您的工程中可以有多个obsClient实例,也可以只有一个。 obsClient实例在调用close方法关闭后不能再次使用。 配置SDK代理请参见配置SDK代理(Node.js SDK)。
  • 获取服务地址(Node.js SDK) 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。 您可以从这里查看OBS当前开通的服务地址和区域信息。 SDK支持带协议名和不带协议名两种方式传入服务地址,例如获取到的服务地址为“your-endpoint”,则初始化OBS客户端时传入的服务地址可以为“http://your-endpoint”、“https://your-endpoint”和“your-endpoint”三种形式。 父主题: 快速入门(Node.js SDK)
  • 配置SDK代理(Node.js SDK) 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。 在项目工程根目录下使用npm命令下载proxy-agent依赖包。 npm install --save proxy-agent 在项目工程里面声明并配置代理。 const ProxyAgent = require("proxy-agent");const proxyAgent = new ProxyAgent(`http://username:password@proxyhost:proxyPort`); 在项目工程里面初始化OBS客户端并配置代理。 var obsClient = new ObsClient({ // 推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html access_key_id: process.env.ACCESS_KEY_ID, secret_access_key: process.env.SECRET_ACCESS_KEY, // 如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入 security_token: process.env.SECURITY_TOKEN, // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写 server: "https://obs.cn-north-4.myhuaweicloud.com", https_agent:proxyAgent, http_agent: proxyAgent,}); 父主题: 初始化(Node.js SDK)
  • 返回结果说明 表3 返回结果 参数类型 描述 表4 说明: 该接口返回是一个Promise类型,需要使用Promise、async/await语法处理。 参数解释: 接口返回信息,详见表4。 表4 Response 参数名称 参数类型 描述 CommonMsg ICommonMsg 参数解释: 接口调用完成后的公共信息,包含HTTP状态码,操作失败的错误码等,详见ICommonMsg。 InterfaceResult ListBucketsOutput 参数解释: 操作成功后的结果数据,详见ListBucketsOutput。 约束限制: 当Status大于300时为空。 表5 ICommonMsg 参数名称 参数类型 描述 Status number 参数解释: OBS服务端返回的HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 Code string 参数解释: OBS服务端返回的错误码。 Message string 参数解释: OBS服务端返回的错误描述。 HostId string 参数解释: OBS服务端返回的请求服务端ID。 RequestId string 参数解释: OBS服务端返回的请求ID。 Id2 string 参数解释: OBS服务端返回的请求ID2。 Indicator string 参数解释: OBS服务端返回的详细错误码。 表6 ListBucketsOutput 参数名称 参数类型 描述 RequestId string 参数解释: OBS服务端返回的请求ID。 默认取值: 无 Owner Owner 参数解释: 桶的所有者。 取值范围: 桶所有者取值参见Owner。 Buckets Bucket[] 参数解释: 桶信息列表。 取值范围: 桶信息取值参见Bucket。 表7 Owner 参数名称 参数类型 是否必选 描述 ID string 作为请求参数时必选 参数解释: 所有者的账号ID,即domain_id。 取值范围: 如何获取账号ID请参见如何获取账号ID和用户ID?(Node.js SDK) 默认取值: 无 DisplayName string 可选 参数解释: 所有者的账号用户名。 默认取值: 无 表8 Bucket 参数名称 参数类型 描述 BucketName string 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用类IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 默认取值: 无 CreationDate string 参数解释: 桶的创建时间。 默认取值: 无 Location string 参数解释: 桶所在的区域。 约束限制: 该参数定义了桶将会被创建在哪个区域,如果使用的终端节点是obs.myhuaweicloud.com,可以不携带此参数;如果使用的终端节点不是obs.myhuaweicloud.com,则必须携带此参数。 取值范围: 当前有效的OBS区域和终端节点的更多信息,请参考地区和终端节点。终端节点即调用API的请求地址,不同服务不同区域的终端节点不同,您可以向企业管理员获取区域和终端节点信息。 默认取值: 终端节点为obs.myhuaweicloud.com且用户未设定区域时,默认为华北-北京一(cn-north-1)。 BucketType string 参数解释: 桶类型。 取值范围: 对象桶:OBJECT 并行文件系统:POSIX。 默认取值: 无
  • 请求参数说明 表1 请求参数列表 参数名称 参数类型 是否必选 描述 QueryLocation boolean 可选 参数解释: 是否同时查询桶的区域位置。 约束限制: 无 取值范围: true:同时查询桶的区域位置 false:不查询桶的区域位置 默认取值: false BucketType string 可选 参数解释: 列举指定类型的桶。 约束限制: 无 取值范围: 桶类型取值可参见BucketType。 默认取值: 无,如果不赋值则默认获取所有桶和并行文件系统列表。 表2 BucketType 可选值 说明 OBJECT 对应类型为对象存储桶。 POSIX 对应类型为并行文件系统(POSIX)。
  • 初始化OBS客户端(Node.js SDK) 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。 向OBS发送任一HTTP/HTTPS请求之前,必须先创建一个ObsClient实例: // 引入obs库// 使用npm安装const ObsClient = require("esdk-obs-nodejs");// 使用源码安装// var ObsClient = require('./lib/obs');// 创建ObsClient实例const obsClient = new ObsClient({ // 推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html access_key_id: process.env.ACCESS_KEY_ID, secret_access_key: process.env.SECRET_ACCESS_KEY, // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入 // security_token: process.env.SECURITY_TOKEN, // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写 server: "https://obs.cn-north-4.myhuaweicloud.com",});// 使用访问OBS// 关闭obsClient// obsClient.close(); 由于JavaScript是异步编程语言,所以不能在访问OBS期间调用close方法。 obsClient在调用obsClient.close方法关闭后不能再次使用。 更多关于OBS客户端初始化的内容请参考“初始化”章节。 日志配置详见配置SDK日志。 代理配置详见配置SDK代理(Node.js SDK)。 父主题: 快速入门(Node.js SDK)
  • 使用前需知(Node.js SDK) 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。 请确认您已经熟悉OBS的基本概念,如桶(Bucket)、对象(Object)、访问密钥(AK和SK)等。 您可以先参考OBS客户端通用示例,了解OBS Node.js SDK接口调用的通用方式。 OBS客户端支持回调函数和Promise对象两种方式返回调用结果。 当前各区域特性开放不一致,部分特性只在部分区域开放,使用过程中如果接口HTTP状态码为405,请确认该区域是否支持该功能特性。 父主题: 快速入门(Node.js SDK)
  • 接口约束 您必须是桶拥有者或拥有获取桶的多版本状态的权限,才能获取桶的多版本状态。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:GetBucketVersioning权限,如果使用桶策略则需授予GetBucketVersioning权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。
  • 请求参数 表1 BucketRequestInput 参数名称 参数类型 是否必选 描述 Bucket string 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 取值范围: 长度为3~63个字符。 默认取值: 无
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全