华为云用户手册

  • 语法格式 将SELECT查询结果插入到表中 1 2 INSERT INTO [TABLE] [db_name.]table_name [PARTITION part_spec] select_statement; 1 2 INSERT OVERWRITE TABLE [db_name.]table_name [PARTITION part_spec] select_statement; part_spec: : (part_col_name1=val1 [, part_col_name2=val2, ...]) 将某条数据插入到表中 1 2 INSERT INTO [TABLE] [db_name.]table_name [PARTITION part_spec] VALUES values_row [, values_row ...]; 1 2 INSERT OVERWRITE TABLE [db_name.]table_name [PARTITION part_spec] VALUES values_row [, values_row ...]; values_row: : (val1 [, val2, ...])
  • 关键字 表1 SELECT关键字说明 参数 描述 ALL ALL关键字用于返回数据库所有匹配的行,包括重复的行。ALL关键字的后面只能跟*,否则执行语句会出错。 ALL是SQL语句的默认行为,通常不会被明确写出,如果不指定ALL或DISTINCT,查询结果将包含所有的行,即使是重复的行数据也将被返回。 DISTINCT 在SELECT语句中使用DISTINCT关键字时,系统会在查询结果中去除重复的数据,确保结果的唯一性。 WHERE 指定查询的过滤条件,支持算术运算符、关系运算符和逻辑运算符。 where_condition 过滤条件。 GROUP BY 指定分组的字段,支持单字段及多字段分组。 col_name_list 字段列表。 ORDER BY 对查询结果进行排序。 ASC/DESC ASC为升序,DESC为降序,默认为ASC。 CLUSTER BY 为分桶且排序,按照分桶字段先进行分桶,再在每个桶中依据该字段进行排序,即当DISTRIBUTE BY的字段与SORT BY的字段相同且排序为降序时,两者的作用与CLUSTER BY等效。 DISTRIBUTE BY 指定分桶字段,不进行排序。 SORT BY 将会在桶内进行排序。 LIMIT 对查询结果进行限制,number参数仅支持INT类型。
  • 语法格式 1 2 3 4 5 6 7 SELECT [ALL | DISTINCT] attr_expr_list FROM table_reference [WHERE where_condition] [GROUP BY col_name_list] [ORDER BY col_name_list][ASC | DESC] [CLUSTER BY col_name_list | DISTRIBUTE BY col_name_list] [SORT BY col_name_list]] [LIMIT number];
  • 语法支持类型 DLI SQL语法支持以下数据类型: STRING,BOOLEAN,BYTES,DECIMAL,TINYINT,SMALLINT,INTEGER,BIGINT,FLOAT,DOUBLE,DATE,TIME,TIMESTAMP,TIMESTAMP WITH LOCAL TIME ZONE,INTERVAL,ARRAY,MULTISET,MAP,ROW 在SQL语法中这些类型用于定义表中列的数据类型。 父主题: SQL语法约束与定义
  • 关键字 表1 关键字说明 参数 是否必选 说明 type 是 数据源类型,“dis”表示数据源为 数据接入服务 。 region 是 数据所在的DIS区域。 ak 否 访问密钥ID(Access Key ID)。访问密钥获取方式请参见我的凭证。 sk 否 Secret Access Key,与访问密钥ID结合使用的密钥。访问密钥获取方式请参见我的凭证。 channel 是 数据所在的DIS通道名称。 partition_count 否 数据所在的DIS通道分区数。该参数和partition_range参数不能同时配置。当该参数没有配置的时候默认读取所有partition。 partition_range 否 指定作业从DIS通道读取的分区范围。该参数和partition_count参数不能同时配置。当该参数没有配置的时候默认读取所有partition。 partition_range = "[0:2]"时,表示读取的分区范围是1-3,包括分区1、分区2和分区3。 encode 是 数据编码格式,可选为“csv”、“json”、“xml”、“email”、“blob”和“user_defined”。 若编码格式为“csv”,则需配置“field_delimiter”属性。 若编码格式为“json”,则需配置“json_config”属性。 若编码格式为“xml”,则需配置“xml_config”属性。 若编码格式为“email”,则需配置“email_key”属性。 若编码格式为“blob”,表示不对接收的数据进行解析,流属性仅能有一个且数据格式为ARRAY[TINYINT]。 若编码格式为“user_defined”,则需配置“encode_class_name”和“encode_class_parameter”属性。 field_delimiter 否 属性分隔符,仅当编码格式为csv时该参数需要填写,例如配置为“,”。 quote 否 可以指定数据格式中的引用符号,在两个引用符号之间的属性分隔符会被当做普通字符处理。 当引用符号为双引号时,请设置quote = "\u005c\u0022"进行转义。 当引用符号为单引号时,则设置quote = "'"。 说明: 目前仅适用于 CS V格式。 设置引用符号后,必须保证每个字段中包含0个或者偶数个引用符号,否则会解析失败。 json_config 否 当编码格式为json时,用户需要通过该参数来指定json字段和流定义字段的映射关系,格式为“field1=data_json.field1; field2=data_json.field2; field3=$”,其中field3=$表示field3的内容为整个json串。 xml_config 否 当编码格式为xml时,用户需要通过该参数来指定xml字段和流定义字段的映射关系,格式为“field1=data_xml.field1; field2=data_xml.field2”。 email_key 否 当编码格式为email时,用户需要通过该参数来指定需要提取的信息,需要列出信息的key值,需要与流定义字段一一对应,多个key值时以逗号分隔,例如“Message-ID, Date, Subject, body”,其中由于邮件正文没有关键字,DLI规定其关键字为“body”。 encode_class_name 否 当encode为user_defined时,需配置该参数,指定用户自实现解码类的类名(包含完整包路径),该类需继承类DeserializationSchema。 encode_class_parameter 否 当encode为user_defined时,可以通过配置该参数指定用户自实现解码类的入参,仅支持一个string类型的参数。 offset 否 当启动作业后再获取数据,则该参数无效。 当获取数据后再启动作业,用户可以根据需求设置该参数的数值。 例如当offset= "100"时,则表示DLI从DIS服务中的第100条数据开始处理。 start_time 否 DIS数据读取起始时间。 当该参数配置时则从配置的时间开始读取数据,有效格式为yyyy-MM-dd HH:mm:ss。 当没有配置start_time也没配置offset的时候,读取最新数据。 当没有配置start_time但配置了offset的时候,则从offset开始读取数据。 enable_checkpoint 否 是否启用checkpoint功能,可配置为true(启用)或者false(停用), 默认为false。 checkpoint_app_name 否 DIS服务的消费者标识,当不同作业消费相同通道时,需要区分不同的消费者标识,以免checkpoint混淆。 checkpoint_interval 否 DIS源算子做checkpoint的时间间隔,单位秒,默认为60。
  • 功能描述 创建source流从数据接入服务(DIS)获取数据。用户数据从DIS接入,Flink作业从DIS的通道读取数据,作为作业的输入数据。Flink作业可通过DIS的source源将数据从生产者快速移出,进行持续处理,适用于将云服务外数据导入云服务后进行过滤、实时分析、监控报告和转储等场景。 数据接入服务(Data Ingestion Service,简称DIS)为处理或分析流数据的自定义应用程序构建数据流管道,主要解决云服务外的数据实时传输到云服务内的问题。数据接入服务每小时可从数十万种数据源(如IoT数据采集、日志和定位追踪事件、网站点击流、社交媒体源等)中连续捕获、传送和存储数TB数据。DIS的更多信息,请参见《数据接入服务用户指南》。
  • 语法格式 CREATE SOURCE STREAM stream_id (attr_name attr_type (',' attr_name attr_type)* ) WITH ( type = "dis", region = "", channel = "", partition_count = "", encode = "", field_delimiter = "", offset= "");
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 date 是 DATE 或 STRING 代表起始日期。 格式为: yyyy-mm-dd yyyy-mm-dd hh:mi:ss yyyy-mm-dd hh:mi:ss.ff3 datepart 是 STRING 代表需要返回的时间单位。 参数datepart支持扩展的日期格式:年-year、月-month或-mon、日-day和小时-hour。 yyyy代表年份。 MM代表月份。 dd代表天。 hh代表小时。 mi代表分钟。 ss代表秒。
  • 示例代码 返回2023。 select datepart(date '2023-08-14 17:00:00', 'yyyy'); 返回2023。 select datepart('2023-08-14 17:00:00', 'yyyy'); 返回59。 select datepart('2023-08-14 17:59:59', 'mi') 返回NULL。 select datepart(date '2023-08-14', null);
  • 数据类型映射 目前,Avro schema 通常是从 table schema 中推导而来。尚不支持显式定义 Avro schema。因此,下表列出了从 Flink 类型到 Avro 类型的类型映射。 除了下面列出的类型,Flink 支持读取/写入 nullable 的类型。Flink 将 nullable 的类型映射到 Avro union(something, null),其中 something 是从 Flink 类型转换的 Avro 类型。 表2 数据类型映射 Flink SQL类型 Avro类型 Avro逻辑类型 CHAR / VARCHAR / STRING string - BOOLEAN boolean - BINARY / VARBINARY bytes - DECIMAL fixed decimal TINYINT int - SMALLINT int - INT int - BIGINT long - FLOAT float - DOUBLE double - DATE int date TIME int time-millis TIMESTAMP long timestamp-millis ARRAY array - MAP(key 必须是 string/char/varchar 类型) map - MULTISET(元素必须是 string/char/varchar 类型) map - ROW record -
  • 注意事项 暂不支持通过python写UDF、UDTF、UDAF自定义函数。 如果使用IntelliJ IDEA工具对创建的自定义函数进行调试,则需要在IDEA上勾选:include dependencies with "Provided" scope,否则本地调试运行时会加载不到pom文件中的依赖包。 具体操作以IntelliJ IDEA版本2020.2为例,参考如下: 在IntelliJ IDEA界面,选择调试的配置文件,单击“Edit Configurations”。 在“Run/Debug Configurations”界面,勾选:include dependencies with "Provided" scope。 单击“OK”完成应用配置。
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 a 是 DOUBLE、BIGINT、DECIMAL、STRING类型。 参数a的格式包括浮点数格式、整数格式、字符串格式。 代表需要被四舍五入的值。 该命令与传统四舍五入方式的区别在于,对数字5进行操作时,由前一位数字来决定,前一位数字为奇数,增加一位,前一位数字为偶数,舍弃一位。 参数a非DOUBLE类型时,会隐式转换为DOUBLE类型后参与运算。 d 否 DOUBLE、BIGINT、DECIMAL、STRING类型。 代表需要四舍五入到的位数。 参数d非INT类型时,会隐式转换为INT类型后参与运算。
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 timestamp 否 DATE或STRING 代表待转换的日期值。 格式: yyyy-mm-dd yyyy-mm-dd hh:mi:ss yyyy-mm-dd hh:mi:ss.ff3 pattern 否 STRING 代表需要转换的格式。 pattern为空时,默认为yyyy-MM-dd hh:mm:ss格式。 format:格式为代表年月日时分秒的时间单位与任意字符的组合,其中: yyyy代表年份。 MM代表月份。 dd代表天。 hh代表小时。 mi代表分钟。 ss代表秒。
  • 示例代码 返回1692149997。 select unix_timestamp('2023-08-16 09:39:57') 假设当前系统时间为2023-08-16 10:23:16,返回1692152596。 select unix_timestamp(); 返回1692115200(即2023-08-16 00:00:00)。 select unix_timestamp("2023-08-16 10:56:45", "yyyy-MM-dd"); 表数据示例 select timestamp1, unix_timestamp(timestamp1) as date1_unix_timestamp, timestamp2, unix_timestamp(datetime1) as date2_unix_timestamp, timestamp3, unix_timestamp(timestamp1) as date3_unix_timestamp from database_t;输出: +------------+-------------------------+-----------------------+---------------------- --+------------------------------------+----------------------------+ | timestamp1| date1_unix_timestamp | timestamp2 | date2_unix_timestamp | timestamp3 | date3_unix_timestamp | +------------+-------------------------+-----------------------+-------------------------+------------------------------------+----------------------------+ | 2023-08-02 | 1690905600000 | 2023-08-02 11:09:14 | 1690945754793 | 2023-01-11 00:00:00.123456789 | 1673366400000 | | 2023-08-03 | 1690992000000 | 2023-08-02 11:09:31 | 1690945771994 | 2023-02-11 00:00:00.123456789 | 1676044800000 | | 2023-08-04 | 1691078400000 | 2023-08-02 11:09:41 | 1690945781270 | 2023-03-11 00:00:00.123456789 | 1678464000000 | | 2023-08-05 | 1691164800000 | 2023-08-02 11:09:48 | 1690945788874 | 2023-04-11 00:00:00.123456789 | 1681142400000 | | 2023-08-06 | 1691251200000 | 2023-08-02 11:09:59 | 1690945799099 | 2023-05-11 00:00:00.123456789 | 1683734400000 | +------------+-------------------------+-----------------------+--------------------------+-----------------------------------+----------------------------+
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 date 是 DATE 或 STRING 代表待转换的日期。 格式: yyyy-mm-dd yyyy-mm-dd hh:mi:ss yyyy-mm-dd hh:mi:ss.ff3 format 是 STRING 代表需要转换的格式。 格式为代表年月日时分秒的时间单位与任意字符的组合,其中: yyyy代表年份。 MM代表月份。 dd代表天。 HH代表24小时制时。 hh代表12小时制时。 mm代表分钟。 ss代表秒。
  • 语法支持类型 DLI SQL语法支持以下数据类型: STRING,BOOLEAN,BYTES,DECIMAL,TINYINT,SMALLINT,INTEGER,BIGINT,FLOAT,DOUBLE,DATE,TIME,TIMESTAMP,TIMESTAMP WITH LOCAL TIME ZONE,INTERVAL,ARRAY,MULTISET,MAP,ROW 在SQL语法中这些类型用于定义表中列的数据类型。 父主题: SQL语法约束与定义
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 date 是 DATE 或 STRING 代表需要判断的字符串。 如果输入为BIGINT、DOUBLE、DECIMAL或DATETIME类型,会隐式转换为STRING类型后参与运算 格式为任意字符串。 format 是 STRING 代表需要转换的目标日期格式。 STRING类型常量,不支持日期扩展格式。 format:格式为代表年月日时分秒的时间单位与任意字符的组合,其中: yyyy代表年份。 mm代表月份。 dd代表天。 hh代表小时。 mi代表分钟。 ss代表秒。
  • 如何获取对象URL?(Harmony SDK) 按https://桶名. 域名 /文件夹目录层级/对象名的方式进行拼接。 如果该对象存在于桶的根目录下,则链接地址将不需要有文件夹目录层级。 各区域对应的域名可以从这里的终端节点查看。 例如需访问区域为“华北-北京四”的桶名为“testbucket”中“test”文件夹下对象名为“test.txt”的对象,则该对象的URL为https://testbucket.obs.cn-north-4.myhuaweicloud.com/test/test.txt。 父主题: 常见问题(Harmony SDK)
  • 获取账号、 IAM 用户、项目的名称和ID 从控制台获取账号名、账号ID、用户名、用户ID、项目名称、项目ID 在华为云首页右上角,单击“控制台”。 在右上角的用户名中选择“我的凭证”。 图1 进入我的凭证 在“我的凭证”界面,API凭证页签中,查看账号名、账号ID、用户名、用户ID、项目名称、项目ID。 每个区域的项目ID有所不同,需要根据业务所在的区域获取对应的项目ID。 图2 查看账号名、账号ID、用户名、用户ID、项目名称、项目ID 调用API获取用户ID、项目ID 获取用户ID请参考:管理员查询IAM用户列表。 获取项目ID请参考:查询指定条件下的项目列表。
  • OBS服务端错误码(Harmony SDK) 在向OBS系统发出请求后,如果遇到错误,会在响应中包含响应的错误码描述错误信息。对象存储访问服务的错误码如表1所示。 表1 错误码 状态码 错误码 错误信息 处理措施 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 通过SDK或API的PUT上传、POST上传和追加写超过5GB的文件 上传段超过5GB 设置的桶配置超过20KB 超过post表单中policy限制的文件大小(用户可自定义) 通过SDK或API的多段上传以及SDK的断点续传超过48.8TB的文件 修改上传的policy中的条件或者减少对象大小。 400 Bad Request EntityTooSmall 上传段除最后一段小于100KB 小于post表单中policy限制的文件大小(用户可自定义) 修改上传的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 InvalidContentLength Content-Length头域内容有误。 请检查封装头域或者提交工单寻求技术支持。 请检查封装头域或联系技术支持。 400 Bad Request InvalidDefaultStorageClass 存储类别不可用。 请确认能够使用的存储类别。 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 Requestvdf InvalidRequest 无效请求。 根据返回的错误消息体提示进行修改。 400 Bad Request InvalidRequestBody 请求体无效,需要消息体的请求没有上传消息体。 按照正确的格式上传消息体。 400 Bad Request InvalidTargetBucketForLogging delivery group对目标桶无ACL权限。 对目标桶配置ACL权限后重试。 400 Bad Request InvalidTag 桶标签不合规,不符合标签策略定义的规范,标签策略相关信息详见标签策略。 请更换符合标签策略规范的标签值。 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 MultipleContentLengths 多个Content-Length头域。 请检查封装头域或者提交工单寻求技术支持。 400 Bad Request TooManyBuckets 用户拥有的桶的数量达到了系统的上限,并且请求试图创建一个新桶。 删除部分桶后重试。 400 Bad Request TooManyCustomDomains 配置了过多的用户域。 删除部分用户域后重试。 400 Bad Request TooManyWrongSignature 因高频错误请求被拒绝服务。 更换正确的Access Key后重试。 400 Bad Request UnexpectedContent 该请求需要消息体而客户端没带,或该请求不需要消息体而客户端带了。 根据说明重试。 400 Bad Request UserKeyMustBeSpecified 该操作只有特殊用户可使用。 请提交工单寻求技术支持。 400 Bad Request FileGatewayBucket 并行文件系统不支持配置桶清单。 请使用对象桶。 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 InvalidObjectState 归档对象不能直接下载,需要先进行恢复才能下载。 先对对象进行恢复操作。 403 Forbidden NotSignedUp 你的账户还没有在系统中注册,必须先在系统中注册了才能使用该账户。 先注册OBS服务。 403 Forbidden RequestTimeTooSkewed 客户端发起请求的时间与OBS服务端的时间相差太大。 出于安全目的,OBS会校验客户端与OBS服务端的时间差,当该时间差大于15分钟时,OBS服务端会拒绝您的请求,从而出现此报错。 请检查客户端时间是否与当前OBS服务端时间相差太大。请根据本地UTC时间调整客户端时间后再访问。 403 Forbidden SignatureDoesNotMatch 请求中带的签名与系统计算得到的签名不一致。 检查你的Secret Access Key和签名计算方法。详细排查方法请参见签名不匹配(SignatureDoesNotMatch)如何处理。 403 Forbidden VirtualHostDomainRequired 未使用 虚拟主机 访问域名。 Host使用虚拟主机访问域名。 须知: 除获取桶列表之外的所有接口,都应当包含桶名。OBS基于DNS解析性能和可靠性的考虑,要求凡是携带桶名的请求,在构造URL的时候都必须将桶名放在domain前面,形成三级域名形式,又称为虚拟主机访问域名。 例如,如果您有一个位于cn-north-4区域的名为test-bucket的桶,期望访问桶中一个名为test-object对象的acl,正确的访问URL为https://test-bucket.obs.cn-north-4.myhuaweicloud.com/test-object?acl 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. 方法不允许。 请确认该区域是否支持所调用的接口功能。各功能发布的区域请参见OBS功能总览。 405 Method Not Allowed FsNotSupport posix桶不支持该API。 方法不允许。 请确认该区域是否支持所调用的接口功能。各功能发布的区域请参见OBS功能总览。 405 Method Not Allowed FeatureNotAvailable 不支持该特性。 服务端不支持特性,请提交工单寻求技术支持。 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 请求的方法服务端不支持。 服务端不支持,请提交工单寻求技术支持。 409 Conflict FsObjectConflict 并行文件系统中,文件和目录不支持互相覆盖,或者重命名的目标文件已经存在。 请确认待覆盖的目标类型(是文件还是目录),请确认重命名的目标文件是否存在。 409 ObjectNotAppendable ObjectNotAppendable 该对象不支持追加上传 请确认桶类型,并行文件系统不支持追加上传。请确认对象类型,归档存储和深度归档存储对象不支持追加上传。 411 Length Required MissingContentLength 必须要提供HTTP消息头中的Content-Length字段。 提供Content-Length消息头。 412 Precondition Failed PreconditionFailed 用户指定的先决条件中至少有一项没有包含。 根据返回消息体中的Condition提示进行修改。 414 URI Too Long Request-URI Too Large 请求使用的URI过长 请减少URI的长度。 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 请降低请求频率。 请降低请求频率。 父主题: 异常处理(Harmony SDK)
  • 准备访问密钥 OBS通过用户账号中的AK和SK进行签名验证,确保通过授权的账号才能访问指定的OBS资源。获取访问密钥前,请确保访问OBS的IAM子用户已开启编程访问,开启方式详见修改或查看IAM用户信息。以下是对AK和SK的解释说明: AK:Access Key ID,接入键标识,用户在 对象存储服务 系统中的接入键标识,一个接入键标识唯一对应一个用户,一个用户可以同时拥有多个接入键标识。对象存储服务系统通过接入键标识识别访问系统的用户。 SK:Secret Access Key,安全接入键,用户在对象存储服务系统中的安全接入键,是用户访问对象存储服务系统的密钥,用户根据安全接入键和请求头域生成鉴权信息。安全接入键和接入键标识一一对应。 访问密钥分永久访问密钥(AK/SK)和临时访问密钥(AK/SK和SecurityToken)两种。每个用户最多可创建两个有效的永久访问密钥。临时访问密钥只在设置的有效期内能够访问OBS,过期后需要重新获取。出于安全性考虑,建议您使用临时访问密钥访问OBS,或使用永久访问密钥访问OBS时,定期更新您的访问密钥(AK/SK)。两种密钥的获取方式如下。 永久访问密钥: 登录管理控制台。 单击页面右上角的用户名,并选择“我的凭证”。 在“我的凭证”页面,单击左侧导航栏的“访问密钥”。 在“访问密钥”页面,单击“新增访问密钥”。 在弹出的“新增访问密钥”对话框中,输入登录密码和对应验证码。 用户如果未绑定邮箱和手机,则只需输入登录密码。 用户如果同时绑定了邮箱和手机,可以选择其中一种方式进行验证。 单击“确定”。 在弹出的“下载确认”提示框中,单击“确定”后,密钥会直接保存到浏览器默认的下载文件夹中。 打开下载下来的“credentials.csv”文件既可获取到访问密钥(AK和SK)。 每个用户最多可创建两个有效的访问密钥。 为防止访问密钥泄露,建议您将其保存到安全的位置。如果用户在此提示框中单击“取消”,则不会下载密钥,后续也将无法重新下载。如果需要使用访问密钥,可以重新创建新的访问密钥。 临时访问密钥: 临时AK/SK和SecurityToken是系统颁发给用户的临时访问令牌,通过接口设置有效期,范围为15分钟至24小时,过期后需要重新获取。临时AK/SK和SecurityToken遵循权限最小化原则。使用临时AK/SK鉴权时,临时AK/SK和SecurityToken必须同时使用。 获取临时访问密钥的接口请参考获取临时AK/SK和securitytoken。 OBS属于全局级服务,所以在获取临时访问密钥时,需要设置Token的使用范围取值为domain,表示获取的Token可以作用于全局服务,全局服务不区分项目或者区域。
  • 接口约束 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。 如果遇到跨域报错、签名不匹配问题,请参考以下步骤排查问题: 未配置跨域,需要在控制台配置CORS规则,请参考配置桶允许跨域请求。 签名计算问题,请参考URL中携带签名排查签名参数是否正确;比如上传对象功能,后端将Content-Type参与计算签名生成授权URL,但是前端使用授权URL时没有设置Content-Type字段或者传入错误的值,此时会出现跨域错误。解决方案为:Content-Type字段前后端保持一致。
  • 请求参数 表1 请求参数列表 参数名称 参数类型 是否必选 描述 input CreateSignedUrlInput 必选 参数解释: 生成带授权信息的URL接口入参,详见CreateSignedUrlInput。 表2 CreateSignedUrlInput 参数名称 参数类型 是否必选 描述 Method HttpMethodType 必选 参数解释: HTTP方法类型,详情参见HttpMethodType。 Bucket string 可选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无 Key string 可选 参数解释: 对象名。对象名是对象在存储桶中的唯一标识。对象名是对象在桶中的完整路径,路径中不包含桶名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4. myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无 SpecialParam SpecialParam 可选 参数解释: 要访问的子资源,详情参见SpecialParam。 Expires number 可选 参数解释: 带授权信息的URL的过期时间。 取值范围: 0~(231-1),单位:秒。 默认取值: 300 Headers object 可选 参数解释: 请求中携带的头域。 默认取值: 无 QueryParams object 可选 参数解释: 请求中携带的查询参数。 默认取值: 无 表3 HttpMethodType 常量名 原始值 说明 GET GET HTTP GET请求。 POST POST HTTP POST请求。 PUT PUT HTTP PUT请求。 DELETE DELETE HTTP DELETE请求。 HEAD HEAD HTTP HEAD请求。 OPTIONS OPTIONS HTTP OPTIONS请求。 表4 SpecialParam 常量名 原始值 适用接口 STORAGE_POLICY storagePolicy 设置/获取桶存储类型。 QUOTA quota 设置/获取桶配额。 STORAGE_INFO storageinfo 获取桶存量信息。 LOCATION location 获取桶区域位置。 ACL acl 设置/获取桶ACL、设置/获取对象ACL。 POLICY policy 设置/获取/删除桶策略。 CORS cors 设置/获取/删除桶CORS配置。 VERSIONING versioning 设置/获取桶多版本状态。 WEBSITE website 设置/获取/删除桶Website配置。 LOG GING logging 设置/获取桶日志管理配置。 LIFECYCLE lifecycle 设置/获取/删除桶生命周期配置。 NOTIFICATION notification 设置/获取桶时间通知配置。 TAGGING tagging 设置/获取/删除桶标签。 APPEND append 追加上传对象 DELETE delete 批量删除对象。 VERSIONS versions 列举桶内多版本对象。 UPLOADS uploads 列举桶内分段上传任务、初始化分段上传任务。 RESTORE restore 恢复归档存储或深度归档存储对象。
  • 代码示例 使用永久访问密钥(AK/SK)创建OBS客户端。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 // 引入依赖包 import ObsClient from '@obs/esdk-obs-harmony'; // 创建ObsClient实例 const obsClient = new ObsClient({ // 推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html AccessKeyId: process.env.AC CES S_KEY_ID, SecretAccessKey: process.env.SECRET_ACCESS_KEY, // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入 // SecurityToken: process.env.SECURITY_TOKEN, // Server填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写 Server: "https://obs.cn-north-4.myhuaweicloud.com", });
  • 参数描述 表1 ObsClientConfig 参数名称 参数类型 是否必选 描述 AccessKeyId string 可选 参数解释: 访问密钥中的AK。获取方式请参考准备访问密钥。 约束限制: 无 默认取值: 无,表示匿名用户。 SecretAccessKey string 可选 参数解释: 访问密钥中的SK。获取方式请参考准备访问密钥。 约束限制: 无 默认取值: 无,表示匿名用户。 SecurityToken string 可选,使用临时访问密钥时必选。 参数解释: 临时访问密钥中的SecurityToken。 如何获取临时访问密钥和securitytoken请参见临时访问密钥AK/SK获取。 默认取值: 无,表示匿名用户 Server string 必选 参数解释: 连接OBS的服务地址。包含协议类型、域名(或IP)、端口号。示例:https://your-endpoint:443。(出于安全性考虑,建议使用https协议)。 您可以从这里查看OBS当前开通的服务地址。 Timeout number 可选 参数解释: HTTP/HTTPS请求的总超时时间。 说明: 如网络状况不佳或者上传文件较大,建议增大Timeout的值。 约束限制: 无 取值范围: 0~(231-1),单位:秒。 默认取值: 300,单位:秒。 IsCname boolean 可选 参数解释: 是否通过自定义域名访问OBS服务。 约束限制: 无 取值范围: true:使用自定义域名访问OBS服务。 false:不使用自定义域名访问OBS服务。 默认取值: false
  • 参数描述 表1 LogConfig 参数名称 参数类型 是否必选 描述 level LogLevel 必选 参数解释: 日志级别。 表2 LogLevel 常量名 原始值 说明 OFF off 关闭级别,如果设置为这个级别,日志打印功能将被关闭。 ERROR error 错误级别,如果设置为这个级别,仅打印发生异常时的错误信息。 WARN warn 告警级别,如果设置为这个级别,除了打印错误级别的信息外,还将打印一些关键事件的信息。 INFO info 信息级别,如果设置为这个级别,除了打印告警级别的信息外,还将打印HTTP/HTTPS请求的耗时时间,ObsClient接口的耗时时间等。 DEBUG debug 调试级别,如果设置为这个级别,除了打印INFO级别的信息外,还将打印每次HTTP/HTTPS请求和响应的头信息、鉴权算法计算出的stringToSign信息等。
  • 日志级别 当系统出现问题需要定位且当前的日志无法满足要求时,可以通过修改日志的级别来获取更多的信息。SDK提供了代表日志级别的枚举常量以设置不同的日志级别,具体说明如下: 表1 LogLevel 常量名 原始值 说明 OFF off 关闭级别,如果设置为这个级别,日志打印功能将被关闭。 ERROR error 错误级别,如果设置为这个级别,仅打印发生异常时的错误信息。 WARN warn 告警级别,如果设置为这个级别,除了打印错误级别的信息外,还将打印一些关键事件的信息。 INFO info 信息级别,如果设置为这个级别,除了打印告警级别的信息外,还将打印HTTP/HTTPS请求的耗时时间,ObsClient接口的耗时时间等。 DEBUG debug 调试级别,如果设置为这个级别,除了打印INFO级别的信息外,还将打印每次HTTP/HTTPS请求和响应的头信息、鉴权算法计算出的stringToSign信息等。
  • HTTP状态码(Harmony SDK) 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 服务不可用 服务端暂时不可访问 父主题: 异常处理(Harmony SDK)
  • 并行文件系统相关接口(Harmony SDK) 并行文件系统(Parallel File System)是对象存储服务(Object Storage Service,OBS)提供的一种经过优化的高性能文件系统,提供毫秒级别访问时延,TB/s级别带宽和百万级别的IOPS,能够快速处理高性能计算(HPC)工作负载。 创建并行文件系统(Harmony SDK) 列举并行文件系统(Harmony SDK) 列举并行文件系统内对象(Harmony SDK) 重命名对象(Harmony SDK) 修改写对象(Harmony SDK) 截断对象(Harmony SDK)
  • 其他使用前须知 本文档是与OBS SDK配套的参考文档,为了您能更好的使用Harmony SDK,推荐前往下载与安装SDK(Harmony SDK)下载最新版本的Harmony SDK。 请确认您已经熟悉OBS的基本概念,如桶(Bucket)、对象(Object)、访问密钥(AK和SK)、终端节点(Endpoint)和访问域名等。 使用OBS客户端进行接口调用成功后,均会返回包含响应头信息的SDK公共响应头实例(或其子类实例)。 当前各区域特性开放不一致,部分特性只在部分区域开放,使用过程中如果接口HTTP状态码为405,请确认该区域是否支持该功能特性。您可以查看功能总览确认区域是否支持该功能特性,或者提交工单寻求技术支持。
共100000条