华为云用户手册

  • 定制运行时程序包 在线编辑 使用控制台可以编辑代码并将代码上传到FunctionGraph,控制台会将代码及相关的配置信息压缩到FunctionGraph服务能够运行的部署程序包中。 上传程序包 如果编写的代码需要用到其他资源(如使用图形库进行图像处理),则需要先创建FunctionGraph函数部署程序包,然后再使用控制台上传部署程序包。定制运行时支持以下两种方式上传程序包。 制作zip包的时候,单函数入口文件必须在根目录,保证解压后,直接出现函数执行入口文件,才能正常运行。 解压后的源代码不能超过1.5G,超大代码请联系客服。 直接上传程序包 在创建部署程序包后,可直接从本地上传ZIP程序包,ZIP程序包大小限制为40MB,如果超过该限制,请使用OBS存储桶。 更多函数资源的限制,请参见使用限制。 上传至OBS存储桶 在创建部署程序包后,可先将.zip文件上传到要在其中创建FunctionGraph函数的区域中的OBS存储桶中,然后指定FunctionGraph函数中设置程序包的OBS存储地址,OBS中ZIP包大小限制为300MB。 更多函数资源的限制,请参见使用限制。
  • Python程序包 在线编辑 FunctionGraph服务预装了适用于Python的开发工具包,如果自定义代码只需要软件开发工具包库,则可以使用FunctionGraph控制台的内联编辑器。使用控制台可以编辑代码并将代码上传到FunctionGraph,控制台会将代码及相关的配置信息压缩到FunctionGraph服务能够运行的部署程序包中。 上传程序包 如果编写的代码需要用到其他资源(如使用图形库进行图像处理),则需要先创建FunctionGraph函数部署程序包,然后再使用控制台上传部署程序包。Python编程语言支持以下两种方式上传程序包。 制作zip包的时候,单函数入口文件必须在根目录,保证解压后,直接出现函数执行入口文件,才能正常运行。 解压后的源代码不能超过1.5G,超大代码请联系客服。 用python语言写代码时,自己创建的包名不能与python标准库同名,否则会提示module加载失败。例如“json”、“lib”,“os”等。 直接上传程序包 在创建部署程序包后,可直接从本地上传ZIP程序包,ZIP程序包大小限制为40MB,如果超过该限制,请使用OBS存储桶。 更多函数资源的限制,请参见使用限制。 上传至OBS存储桶 在创建部署程序包后,可先将.zip文件上传到要在其中创建FunctionGraph函数的区域中的OBS存储桶中,然后指定FunctionGraph函数中设置程序包的OBS存储地址,OBS中ZIP包大小限制为300MB。 更多函数资源的限制,请参见使用限制。
  • GO语言程序包 上传程序包 只能上传程序包,部署程序包必须是.zip文件。Go编程语言支持以下两种方式上传程序包。 制作zip包的时候,单函数入口文件必须在根目录,保证解压后,直接出现函数执行入口文件,才能正常运行。 解压后的源代码不能超过1.5G,超大代码请联系客服。 直接上传程序包 在创建部署程序包后,可直接从本地上传ZIP程序包,ZIP程序包大小限制为40MB,如果超过该限制,请使用OBS存储桶。 更多函数资源的限制,请参见使用限制。 上传至OBS存储桶 在创建部署程序包后,可先将.zip文件上传到要在其中创建FunctionGraph函数的区域中的OBS存储桶中,然后指定FunctionGraph函数中设置程序包的OBS存储地址,OBS中ZIP包大小限制为300MB。 更多函数资源的限制,请参见使用限制。
  • C#语言程序包 上传程序包 只能上传程序包,部署程序包必须是.zip文件。C#编程语言支持以下两种方式上传程序包。 制作zip包的时候,单函数入口文件必须在根目录,保证解压后,直接出现函数执行入口文件,才能正常运行。 解压后的源代码不能超过1.5G,超大代码请联系客服。 直接上传程序包 在创建部署程序包后,可直接从本地上传ZIP程序包,ZIP程序包大小限制为40MB,如果超过该限制,请使用OBS存储桶。 更多函数资源的限制,请参见使用限制。 上传至OBS存储桶 在创建部署程序包后,可先将.zip文件上传到要在其中创建FunctionGraph函数的区域中的OBS存储桶中,然后指定FunctionGraph函数中设置程序包的OBS存储地址,OBS中ZIP包大小限制为300MB。 更多函数资源的限制,请参见使用限制。
  • Node.js程序包 在线编辑 FunctionGraph服务预装了适用于Node.js的开发工具包,如果自定义代码只需要软件开发工具包库,则可以使用FunctionGraph控制台的内联编辑器。使用控制台可以编辑代码并将代码上传到FunctionGraph,控制台会将代码及相关的配置信息压缩到FunctionGraph服务能够运行的部署程序包中。 上传程序包 如果编写的代码需要用到其他资源(如使用图形库进行图像处理),则需要先创建FunctionGraph函数部署程序包,然后再使用控制台上传部署程序包。Node.js编程语言支持以下两种方式上传程序包。 制作zip包的时候,单函数入口文件必须在根目录,保证解压后,直接出现函数执行入口文件,才能正常运行。 解压后的源代码不能超过1.5G,超大代码请联系客服。 直接上传程序包 在创建部署程序包后,可直接从本地上传ZIP程序包,ZIP程序包大小限制为40MB,如果超过该限制,请使用OBS存储桶。 更多函数资源的限制,请参见使用限制。 上传至OBS存储桶 在创建部署程序包后,可先将.zip文件上传到要在其中创建FunctionGraph函数的区域中的OBS存储桶中,然后指定FunctionGraph函数中设置程序包的OBS存储地址,OBS中ZIP包大小限制为300MB。 更多函数资源的限制,请参见使用限制。
  • Java程序包 由于Java是编译型语言,所以不能在线编辑代码,只能上传程序包,部署程序包可以是.zip文件或独立的jar文件。 上传Jar包 如果函数没有引入其他依赖包,可以直接上传函数jar包。 如果函数引入了其他依赖包,可以先将依赖包上传至OBS桶,创建函数时设置依赖包,并上传函数jar包。 上传zip 如果函数中引入其他三方件,也可以制作包含所有依赖三方件和函数jar的zip包,选择上传zip文件。您可参见使用IDEA工具创建普通Java项目、使用IDEA工具创建maven项目。 Java编程语言支持以下两种方式上传程序包。 制作zip包的时候,单函数入口文件必须在根目录,保证解压后,直接出现函数执行入口文件,才能正常运行。 解压后的源代码不能超过1.5G,超大代码请联系客服。 直接上传程序包 在创建部署程序包后,可直接从本地上传ZIP程序包,ZIP程序包大小限制为40MB,如果超过该限制,请使用OBS存储桶。 更多函数资源的限制,请参见使用限制。 上传至OBS存储桶 在创建部署程序包后,可先将.zip文件上传到要在其中创建FunctionGraph函数的区域中的OBS存储桶中,然后指定FunctionGraph函数中设置程序包的OBS存储地址,OBS中ZIP包大小限制为300MB。 更多函数资源的限制,请参见使用限制。
  • 调用函数 在浏览器地址栏输入APIG触发器的调用地址URL,按“Enter”。 函数执行完毕,得到返回结果,如图3所示。 图3 返回结果 FunctionGraph函数对APIG调用的传入值为函数自带的事件模板,您可以参见表2。 FunctionGraph函数对来自APIG调用的返回结果进行了封装,APIG触发器要求函数的返回结果中必须包含body(String)、statusCode(int)、headers(Map)和isBase64Encoded(boolean),才可以正确返回。
  • 创建函数 登录 函数工作流 控制台,在左侧的导航栏选择“函数模板”。 在“函数模板”界面,“云服务”选择“函数工作流”,模板选择Python 2.7的“context使用指导”,单击“使用模板”。 此处以Python 2.7的“context使用指导”举例,请您根据实际需求选择模板。 选择函数模板后,会加载模板内置的代码、配置信息,进入到“创建函数”界面。 输入函数名称“context”,选择已创建的委托,其他设置保持不变,单击“创建函数”,进入配置详情页。 若不配置委托,在触发函数时,执行结果会返回 Failed to access other services because no temporary AK, SK, or token has been obtained. Please set an agency. 请您根据实际业务进行参数配置。
  • 创建步骤 登录函数工作流控制台,在左侧导航栏选择“应用中心”。 单击右上方的“创建应用”,进入“选择应用模板”页面。 左侧导航栏分为“运行时”和“使用场景”两个筛选条件,您可根据业务需求筛选相应模板,本章节以创建DIS数据处理模板为例进行介绍。确定好模板后,单击“使用模板”进入应用配置页面。 图1 选择应用模板 在“应用配置”页,填写如下信息: 区域:默认。 项目:默认。 应用名称:自定义。 运行时语言:默认。 委托名称:根据实际情况选择是否使用委托,例如步骤3中创建的DIS数据处理模板,需要您创建委托授权函数访问DIS服务,具体如何创建委托请参考配置委托权限。 描述:自定义。 信息配置完成后,单击“立即创建”。
  • 参数介绍 应用程序创建成功后,可在应用中心列表中单击应用程序名称查看详细信息。以下是主要参数信息的介绍: 资源栈名称:通过该链接可以跳转到资源栈部署成功后的任务详情页面。 应用ID:当前部署的应用程序在系统中唯一标识,可以通过该标识和应用名称定位问题。 DIS数据服务:通过该链接可以跳转到已创建好的DIS数据服务详情页面。 函数服务:通过该连接可以跳转到已创建好的函数详情页面。 图2 总览页参数 存储库信息中“名称”:通过该链接可跳转到相关函数代码托管的代码仓,可用于浏览及下载相关代码。 图3 代码页参数
  • 前提条件 进行操作之前,需要做好以下准备: 已经创建函数并开启VPC,创建过程请参见创建函数和配置VPC网络。 已经创建EG事件通道,创建过程请参见创建eg事件通道。 已经创建RocketMQ实例,创建过程请参见购买RcoketMQ实例。 已经创建RocketMQ topic,创建过程请参见创建topic。 已经创建RocketMQ 消费组,创建过程请参见创建消费组。 函数绑定的VPC和RocketMQ实例的VPC需保持一致。开启函数流VPC访问后,需要在RocketMQ服务安全组配置对应子网的权限。
  • 示例 使用环境变量设置以下信息:安装文件的目录、存储输出的位置、存储连接和日志记录设置等。这些设置与应用程序逻辑解耦,在需要变更设置时,无需更新函数代码。 在如下函数代码片段中,参数“obs_output_bucket”为图片处理后存储地址。 def handler(event, context): srcBucket, srcObjName = getObsObjInfo4OBSTrigger(event) obs_address = context.getUserData('obs_address') outputBucket = context.getUserData('obs_output_bucket') if obs_address is None: obs_address = '{obs_address_ip}' if outputBucket is None: outputBucket = 'casebucket-out' ak = context.getAccessKey() sk = context.getSecretKey() # download file uploaded by user from obs GetObject(obs_address, srcBucket, srcObjName, ak, sk) outFile = watermark_image(srcObjName) # 将转换后的文件上传到新的obs桶中 PostObject (obs_address, outputBucket, outFile, ak, sk) return 'OK' 通过设置环境变量obs_output_bucket,可以灵活设置存储输出图片的OBS桶。 图2 环境变量
  • 预设值 环境变量存在如下预设值,您无法配置和预设值同名的环境变量。 表1 预设值及说明 环境变量名 含义 获取方式和默认值 RUNTIME_PROJECT_ID 函数的项目ID Context类提供接口或通过系统环境变量获取 RUNTIME_FUNC_NAME 函数名称 Context类提供接口或通过系统环境变量获取 RUNTIME_FUNC_VERSION 函数版本 Context类提供接口或通过系统环境变量获取 RUNTIME_HANDLER 函数执行入口 通过系统环境变量获取 RUNTIME_TIMEOUT 函数执行的超时时间 通过系统环境变量获取 RUNTIME_USERDATA 用户通过环境变量传入的值 Context类提供接口或通过系统环境变量获取 RUNTIME_CPU 函数占用的CPU资源,取值与MemorySize成比例 Context类提供接口或通过系统环境变量获取 RUNTIME_MEMORY 函数配置的内存大小 Context类提供接口或通过系统环境变量获取 单位MB RUNTIME_MAX_RESP_BODY_SIZE 最大返回值限制 通过系统环境变量获取 系统默认为6291456 Byte RUNTIME_INITIALIZER_HANDLER 函数初始化入口 通过系统环境变量获取 RUNTIME_INITIALIZER_TIMEOUT 函数初始化超时时间 通过系统环境变量获取 RUNTIME_ROOT Runtime包的路径 通过系统环境变量获取 系统默认路径为/home/snuser/runtime RUNTIME_CODE_ROOT 代码在容器中的存放目录 通过系统环境变量获取 系统默认路径为/opt/function/code RUNTIME_ LOG _DIR 系统日志在容器中存放的目录 通过系统环境变量获取 系统默认路径为/home/snuser/log
  • 操作步骤 设置FunctionGraph函数的加密配置和环境变量,无需对代码进行任何更改,可以将设置动态参数传递到函数代码和库。 图1 添加环境变量 例如Node.js语言加密配置和环境变量的值(value)可以通过Context类中的getUserData(string key)获取,详细请参见Node.js函数开发指南。 设置加密配置、环境变量时,用户自定义的键(key)/值(value),键(key)输入规范:可包含字母、数字、下划线_,以大/小写字母开头。 设置“键”和“值”的总长度不超过4096个字符。(当前支持局点:利雅得、贵阳一、汽车一、约翰内斯堡、伊斯坦布尔、乌兰察布一、圣保罗一、香港、新加坡、上海二、圣地亚哥、雅加达、贵阳二零一) 设置环境变量时,FunctionGraph会明文展示所有输入信息,请不要输入敏感信息(如账户密码等),以防止信息泄露。 打开加密开关之后,界面上会对键值进行加密,参数传输过程中键值也处于加密状态。
  • 获取访问密钥 访问密钥(AK/SK,Access Key ID/Secret Access Key)包含访问密钥ID(AK)和秘密访问密钥(SK)两部分,是您在华为云的长期身份凭证,您可以通过访问密钥访问华为云API。 登录华为云,单击右上角的“控制台”。 图1 控制台 在“控制台”页面,鼠标移动至右上方的用户名,在下拉列表中选择“我的凭证”。 图2 我的凭证 在“我的凭证”页面中,单击“访问密钥页签”。 图3 访问密钥页签 单击“新增访问密钥”,输入“描述”信息。 图4 新增访问密钥 单击“确定”,生成并下载访问密钥。 图5 生成下载访问密钥 创建访问密钥成功后,您可以在访问密钥列表中查看访问密钥ID(AK),在下载的.csv文件中查看访问密钥(SK)。 父主题: 前置条件
  • 什么是预留实例? 函数工作流提供了按量和预留两种类型的实例。 按量实例是由函数工作流根据用户使用函数的实际情况来创建和释放,当函数工作流收到函数的调用请求时,自动为此请求分配执行环境。 预留实例是将函数实例的创建和释放交由用户管理,当您为某一函数创建了预留实例,函数工作流收到此函数的调用请求时,会优先将请求转发给您的预留实例,当请求的峰值超过预留实例处理能力时,剩余部分的请求将会转发给按量实例,由函数工作流自动为您分配执行环境。 预留实例在创建完成后,会自动加载该函数的代码、依赖包以及执行初始化入口函数,且预留实例会常驻环境,消除冷启动对业务的影响。 用户默认没有权限使用预留实例,如果需要使用预留实例功能,请在工单系统提交工单添加白名单。 您可以直接创建或者通过函数创建预留实例,两者的区别如下: 表1 两种方式创建预留实例的区别 创建方式 优点 缺点 直接创建 创建步骤简单,易操作 只能创建固定个数的预留实例,可能导致繁忙时预留实例不够用,或者空闲时,预留实例资源浪费 通过函数创建 支持创建不同时间段不同数量的预留实例,避免繁忙时预留实例不够用,或者空闲时,预留实例资源浪费 创建步骤繁杂
  • 规则约束 所有涉及update、delete规则项,均不支持多表操作审核。 update、delete多表操作仅支持规则项:“不应用单条update、delete语句对多个表实现更新、删除操作”。 对于这两个规则,“在PL/pgSQL中,关键字建议大写,非关键字小写”、“sql语句中,关键字建议大写,非关键字小写”,不要在以对象名作为非保留关键字的语句中使用,存在审核不准确情况,比如:SELECT ID FROM name,name是非保留关键字。 对于规则“对分区表执行交换分区、合并分区、分隔分区、清空分区、删除分区时,必须同步更新全局索引”,在用户修改数据库系统参数enable_gpi_auto_update后,该规则可能不起作用,请在数据库侧清理session,可登录到数据库中执行CLEAN CONNECTION TO ALL FORCE FOR DATABASE db_name;。 “查询系统视图时,如果使用对象名作为筛选条件,对象名应使用小写”支持的系统视图参见表2。 “谨慎删除数据库对象及清理数据”,其中阈值中支持审核SQL语法见表表3 表2 视图审核 视图名 所属schema 表示对象名的列 adm_arguments pg_catalog、sys owner、object_name、package_name、argument_name adm_audit_object pg_catalog、sys username、owner、obj_name、action_name adm_audit_session pg_catalog、sys username、action_name adm_audit_statement pg_catalog、sys username、obj_name、action_name adm_col_comments pg_catalog、sys owner、table_name、column_name、schema adm_col_privs pg_catalog、sys grantor、owner、grantee、table_schema、table_name、column_name、privilege adm_coll_types pg_catalog、sys owner、type_name、elem_type_mod、elem_type_owner、elem_type_name adm_constraints pg_catalog、sys owner、constraint_name、table_name、index_owner、index_name adm_indexes pg_catalog、sys owner、index_name、table_name、table_owner、tablespace_name adm_ind_columns pg_catalog、sys index_owner、index_name、table_name、table_owner、column_name adm_objects pg_catalog、sys owner、object_name、subobject_name adm_procedures pg_catalog、sys owner、object_name、procedure_name、impltypeowner、impltypename adm_role_privs pg_catalog、sys grantee、granted_role adm_tab_col_statistics pg_catalog、sys owner、table_name、column_name、schema adm_roles pg_catalog、sys role adm_source pg_catalog、sys owner、name adm_sys_privs pg_catalog、sys grantee、privilege adm_tab_cols pg_catalog、sys owner、table_name、column_name、data_type_owner、schema、qualified_col_name adm_tab_privs pg_catalog、sys grantee、owner、table_name、grantor、privilege adm_tables pg_catalog、sys owner、table_name、tablespace_name adm_tab_columns pg_catalog、sys owner、table_name、column_name、data_type_owner、schema adm_tab_comments pg_catalog、sys owner、table_name、column_name、schema adm_tab_statistics pg_catalog、sys owner、table_name adm_triggers pg_catalog、sys owner、trigger_name、table_owner、table_name adm_type_attrs pg_catalog、sys type_name、attr_name、attr_type_name、character_set_name adm_types pg_catalog、sys owner、type_name adm_users pg_catalog、sys username、default_tablespace、temporary_tablespace、default_collation adm_views pg_catalog、sys owner、view_name db_all_tables pg_catalog、sys owner、table_name、tablespace_name db_arguments pg_catalog、sys owner、object_name、package_name、argument_name db_col_comments pg_catalog、sys owner、table_name、column_name、schema db_col_privs pg_catalog、sys grantor、owner、grantee、table_schema、table_name、column_name、privilege db_coll_types pg_catalog、sys owner、type_name、elem_type_mod、elem_type_owner、elem_type_name db_constraints pg_catalog、sys owner、constraint_name、table_name、index_owner、index_name db_indexes pg_catalog、sys owner、index_name、table_name、table_owner、tablespace_name db_ind_columns pg_catalog、sys index_owner、index_name、table_name、table_owner、column_name db_objects pg_catalog、sys owner、object_name、subobject_name db_procedures pg_catalog、sys owner、object_name db_tab_col_statistics pg_catalog、sys owner、table_name、column_name、schema db_source pg_catalog、sys owner、name db_tab_columns pg_catalog、sys owner、table_name、column_name、data_type_owner、schema db_tab_comments pg_catalog、sys owner、table_name、schema db_tables pg_catalog、sys owner、table_name、tablespace_name db_triggers pg_catalog、sys trigger_name、table_owner、table_name db_types pg_catalog、sys owner、type_name db_users pg_catalog、sys username db_views pg_catalog、sys owner、view_name dict pg_catalog、sys table_name dictionary pg_catalog、sys table_name my_col_comments pg_catalog、sys owner、table_name、column_name、schema my_col_privs pg_catalog、sys grantor、owner、grantee、table_schema、table_name、column_name、privilege my_coll_types pg_catalog、sys owner、type_name、elem_type_mod、elem_type_owner、elem_type_name my_constraints pg_catalog、sys owner、constraint_name、table_name、index_owner、index_name my_indexes pg_catalog、sys owner、index_name、table_name、table_owner、tablespace_name my_ind_columns pg_catalog、sys index_owner、index_name、table_name、table_owner、column_name my_objects pg_catalog、sys object_name、subobject_name my_procedures pg_catalog、sys owner、object_name、procedure_name、impltypeowner、impltypename my_role_privs pg_catalog、sys grantee、granted_role my_tab_col_statistics pg_catalog、sys table_name、column_name、schema my_source pg_catalog、sys owner、name my_tab_columns pg_catalog、sys owner、table_name、column_name、data_type_owner、schema my_tab_comments pg_catalog、sys owner、table_name、column_name、schema my_tab_statistics pg_catalog、sys table_name my_tables pg_catalog、sys owner、table_name、tablespace_name my_triggers pg_catalog、sys owner、trigger_name、table_owner、table_name my_type_attrs pg_catalog、sys type_name、attr_name、attr_type_name、character_set_name my_types pg_catalog、sys type_name my_views pg_catalog、sys owner、view_name pg_indexes pg_catalog、sys schemaname、tablename、indexname、tablespace pg_roles pg_catalog、sys rolename pg_tables pg_catalog、sys schemaname、tablename、tableowner、tablespace、tablecreator pg_user pg_catalog、sys username、nodegroup pg_views pg_catalog、sys schemaname、viewname、viewowner column_privileges information_schema、sys grantor、grantee、table_catalog、table_schema、table_name、column_name columns information_schema、sys table_catalog、table_schema、table_name、column_name constraint_column_usage information_schema、sys table_catalog、table_schema、table_name、column_name、constraint_catalog、constraint_schema、constraint_name constraint_table_usage information_schema、sys table_catalog、table_schema、table_name、constraint_catalog、constraint_schema、constraint_name enabled_roles information_schema、sys role_name schemata information_schema、sys catalog_name、schema_name、schema_owner、default_character_set_catalog、default_character_set_schema、default_character_set_name table_constraints information_schema、sys constraint_catalog、constraint_schema、constraint_name、table_catalog、table_schema、table_name table_privileges information_schema、sys grantor、grantee、table_catalog、table_schema、table_name tables information_schema、sys table_catalog、table_schema、table_name、self_referencing_column_name、user_defined_type_catalog、user_defined_type_schema、user_defined_type_name triggers information_schema、sys trigger_catalog、trigger_schema、trigger_name、event_object_catalog、event_object_schema、event_object_table、action_reference_old_table、action_reference_new_table usage_privileges information_schema、sys grantor、grantee、object_catalog、object_schema、object_name views information_schema、sys table_catalog、table_schema、table_name 表3 支持审核的SQL语法 DDL类型 SQL语法 DROP DROP TABLE, DROP TABLESPACE, DROP AGGREGATE, DROP AUDIT POLICY, DROP CAST, DROP DATABASE, DROP DATA SOURCE, DROP DIRECTORY, DROP EVENT, DROP FOREIGN TABLE, DROP GLOBAL CONFIGURATION, DROP GROUP, DROP MASKING POLICY, DROP MATERIALIZED VIEW, DROP MODEL, DROP OPERATOR, DROP OWNED, DROP PACKAGE, DROP PACKAGE BODY, DROP PROCEDURE, DROP RESOURCE LABEL, DROP RESOURCE POOL, DROP ROLE, DROP ROW LEVEL SECURITY POLICY, DROP RULE, DROP PUBLICATION, DROP SCHEMA, DROP SEQUENCE, DROP FUNCTION, DROP SERVER, DROP SUBSCRIPTION, DROP SYNONYM, DROP TEXT SEARCH CONFIGURATION, DROP TEXT SEARCH DICTIONARY, DROP TRIGGER, DROP TYPE, DROP USER, DROP USER MAPPING, DROP VIEW, DROP WEAK PASSWORD DICTIONARY ALTER ALTER DROP PARTITION, ALTER TRUNCATE PARTITION, ALTER DROP COLUMN, ALTER DROP CONSTRAINT, ALTER DROP FOREIGN TABLE, ALTER DROP AUDIT POLICY, ALTER DROP MASKING POLICY, ALTER DROP SERVER, ALTER DROP TEXT SEARCH CONFIGURATION, ALTER DROP USER MAPPING, ALTER DROP DATA SOURCE TRUNCATE TRUNCATE
  • 约束限制 规则的嵌套审核仅支持四种详情可参见表1。 With as只考虑SELECT语句。 别名不能和实体表重名,且别名之间不能重名。 暂不支持视图中的表审核。 不支持对数据库系统表及视图审核。 不支持输入的语句, 语句中涉及的表结构,阈值中含有“#”或“/*”的SQL 审核。 表1 支持的嵌套审核语句 序号 SQL语句 1 select id, (select 子查询) as name from table; 2 select id from table where id in (select 子查询); 3 select * from table1,(select 子查询); 4 with e as (select 子查询) select * from e;
  • 操作步骤 完成步骤五,单击“下一步”,进入迁移验证页面。 请修正对象校正中所有转换失败项,才能启动迁移验证。 单击“启动”,进行校验。页面以进度条和百分比显示迁移进度。 迁移验证完成后,页面显示读取到的SQL行总数与迁移成功数与失败数。 查看校验历史详细信息,请见查看迁移历史详情。 图1 迁移验证 停止验证后,会出现提示“迁移存在错误/风险,请点击查看”单击后有“警告 : 异常自动暂停”弹框提示。 停止后单击“启动”,可继续进行迁移。 查看空存储过程:可查看失败的对象列表和失败次数。 单击“下载报告”,选择所需报告单击“下载”,下载至本地供用户分析。MySQL为源时,子对象的相关数据不会统计在迁移报告中。 迁移统计报告:该报告简要介绍了迁移和验证对象的状态。 迁移错误报告:该报告介绍了对象迁移失败的详情,包括每个对象的状态、迁移语句和错误信息。 迁移错误报告(匿名化):该报告介绍了对象迁移失败的详情,包括每个对象的状态、迁移语句、错误信息,但源库SQL语句和迁移后的SQL语句均以匿名的形式呈现。 迁移全量报告:该报告介绍了对象迁移的详情,包括每个对象的状态、迁移语句和错误信息。 迁移全量报告(匿名化):该报告介绍了对象迁移的详情,包括每个对象的状态、迁移语句、错误信息,但源库SQL语句和迁移后的SQL语句均以匿名的形式呈现。 若有迁移失败,可单击对象类型后的“详情”,可返回对象校正页面查看对象类型的具体信息。 迁移验证完成后,若有验证失败项,可返回对象校正页面,进行单独修改或批量语句更新。
  • 源数据库准备和授权 创建数据库评估任务时,UGO将检查源数据库的权限。您需在创建评估任务前检查数据库权限,并执行以下操作。 Oracle为源库时,为了使DBMS_METADATA.GET_DDL方法返回的对象DDL保持统一,UGO需要对采集的SQL进行格式化,因此需要非只读权限账号。UGO连接时会进行导出参数设置,该设置仅对采集的DDL有效,作用范围是会话级别,不会对源库产生变更及影响。UGO会进行三个参数设置,详细介绍如下: 让表约束、索引将成为CREATE TABLE语句的一部分,不单独生成ALTER TABLE语句。 DBMS_METADATA.SET_TRANSFORM_PA RAM (dbms_metadata.SESSION_TRANSFORM, 'CONSTRAINTS_AS_ALTER', false) 导出的DDL中不包含排序规则子句。 call DBMS_METADATA.SET_TRANSFORM_PARAM(dbms_metadata.SESSION_TRANSFORM, 'COLLATION_CLAUSE', 'NEVER') 采集后的SQL语句添加分号; DBMS_METADATA.SET_TRANSFORM_PARAM(dbms_metadata.SESSION_TRANSFORM, 'SQLTERMINATOR', true) 用户需拥有创建UGO评估项目的对应权限。具体权限,可参见权限管理进行设置。 各源库分别需要具备以下权限,需成功测试连接到源数据库并通过所有预检查项。 Oracle源数据库连接用户需要具有待迁移数据库的DBMS_METADATA、动态视图和Schema对象数量检查的权限。 MySQL为源库时需要具有MySQL系统库的查询权限、PRO CES S权限和待迁移数据库的所有权限。从MySQL-8.0版本开始,针对存储过程和存储函数,还需要SHOW_ROUTINE权限。 GoldenDB为源库时需要具有GoldenDB系统库的查询权限、PROCESS权限和待迁移数据库的所有权限。针对存储过程和存储函数,还需要SHOW_ROUTINE权限。 Microsoft SQL Server为源库时需要具有VIEW DEFINITION权限。 以MySQL和GoldenDB为源,如果给用户赋予了全局的SELECT权限,SHOW_ROUTINE权限也能通过,无需再单独授予。 父主题: 创建评估项目
  • SQL审核概述 SQL审核功能能够帮助用户在开发阶段发现隐藏在代码中的SQL规范性、设计合理性和性能等问题,内置200+审核规则,涵盖对DML、DDL、PL/SQL等各类对象进行深度审核,且可根据业务需求对规则进行自由组合形成模板,支持 GaussDB 、MySQL两种数据库,可实现单语句、批量代码文件上传(自动提取SQL)、直连数据库3种审核方式,深度看护代码,避免烂SQL流入生产环境。当前SQL审核功能(包括语句审核、数据库审核和规则管理)仅支持白名单用户使用。 父主题: SQL审核
  • 约束限制 数据库的系统库由数据库自身维护,可能会禁止用户的创建操作,因此不建议您使用系统库进行对象迁移。MySQL数据库的系统库有performance_schema、information_schema、mysql以及sys;GoldenDB数据库的系统库有information_schema、mysql、performance_schema以及sys等;PostgreSQL数据库系统库有postgres库等。 以GaussDB为目标库,当源端的对象名称超过63个字节时,迁移至GaussDB,对象名将会被截断。 使用系统库创建迁移项目可能导致权限检查失败。 每个用户最多支持10迁移任务配额。 此处用户选择要迁移的目标数据库,并填写目标数据库信息。 每个迁移项目对应一个评估项目,但可以基于一个评估项目多次创建迁移项目。
  • 空间管理 空间管理界面主要由部门空间、群组空间和个人空间三部分组成。 图4 空间管理页面 部门空间 操作按钮:提供分配、禁用、删除团队空间操作入口。 搜索框:输入部门名称搜索部门空间,支持模糊搜索。 部门空间列表:展示部门空间信息,包括部门名称、部门管理员、部门空间的状态、空间总容量及已使用容量,并提供更多部门空间管理操作,包括修改团队空间大小,分配团队空间、禁用/启用团队空间、删除团队空间。 群组空间 操作按钮:提供解散、禁用/启用群组空间操作入口。 搜索框:输入群组名称或拥有者名称搜索群组空间,支持模糊搜索。 群组空间列表:展示群组空间信息,包括群组名称、拥有者、状态、空间总容量及已使用容量、成员人数,并提供更多群组空间管理操作,包括修改群组空间容量,管理群组成员、禁用/启用群组空间、解散群组空间。 个人空间 操作按钮:提供分配、删除、禁用个人空间操作入口。 搜索框:支持在下拉框中选择具体部门筛选出部门下所有用户的个人空间,在搜索框中输入用户名称搜索用户个人空间,用户名称支持模糊搜索。 个人空间列表:展示个人空间信息,包括用户姓名、个人空间状态、个人空间总容量及已使用容量、用户所属部门,并提供更多个人空间管理操作,包括修改个人空间容量,分配个人空间、禁用/启用个人空间、删除个人空间。
  • 使用iOS SDK、Android SDK上报日志到LTS 使用iOS SDK、Android SDK上报日志到LTS的场景下,建议您使用AK/SK认证。为了保障安全性,建议您创建一个新的 IAM 用户,并赋予该IAM用户最小权限,参考步骤如下: 登录 统一身份认证 服务控制台。 在用户页面,单击“创建用户”。 在配置用户基本信息页面,访问方式勾选“编程访问”,去掉勾选“管理控制台访问”,凭证类型勾选“访问密钥”,其他参数默认即可。 单击“下一步”,无需加入用户组。 单击“创建用户”,IAM用户创建完成,用户列表中显示新创建的IAM用户。 在“下载访问密钥”对话框,单击“确定”,访问密钥下载成功。更多操作请参考创建IAM用户。 新创建的用户无控制台访问权限,其AK/SK也无云服务的读写权限,只能上报日志到LTS。 使用iOS SDK、Android SDK上报日志到LTS时,您就可以使用获取到AK/SK上报日志了。详细操作请参考使用SDK接入LTS。
  • Web/百度小程序/钉钉小程序/微信小程序/支付宝/快应用SDK上报日志到LTS 使用Web/百度小程序/钉钉小程序/微信小程序/支付宝/快应用SDK上报日志到LTS的场景下,需要开启日志流的匿名写入功能,开启后上报日志没有经过有效鉴权,可能产生脏数据。 登录 云日志 服务控制台。 在日志管理页面,单击日志组名称对应的。 单击“创建日志流”。 在创建日志流页面,开启“匿名写入”,适用于端侧SDK上报日志,打开匿名写入则表示该日志流打开匿名写入权限,不会经过有效鉴权,可能产生脏数据。 单击“确定”。更多操作请参考管理日志流。 开启“匿名写入”后,就可以使用Web/百度小程序/钉钉小程序/微信小程序/支付宝/快应用SDK上报日志到LTS,详细请参考使用SDK接入LTS。
  • 计费方式 DDoS原生高级防护提供DDoS原生标准版、DDoS原生防护-全力防基础版、DDoS原生防护-全力防高级版三种服务版本,根据您选择的版本和规格参数计费。 DDoS原生标准版、DDoS原生防护-全力防高级版提供包周期预付费计费模式,使用越久越便宜。包周期计费按照订单的购买周期来进行结算。 DDoS原生防护-全力防基础版提供按需和包周期的计费模式。 表1 计费项信息 版本 计费项目 计费方式 说明 DDoS原生标准版 实例 按购买的实例数量计费。 每个实例的防护规格说明如下: 防护能力:20G 防护IP数:1个 防护次数:10次 IP更换次数:5次 购买时长:1个月 业务带宽:默认提供100M DDoS原生防护-全力防基础版 实例 按购买的实例数量计费。 - 防护IP数 每个DDoS原生防护-全力防基础版实例防护的IP个数。 取值范围为50~500,且防护IP数必须设置为5的倍数。 防护次数 每个DDoS原生防护-全力防基础版实例防护的次数。 防护次数:无限次 购买时长 提供包月和包年的购买模式。 支持“3个月”、“6个月”或“1年”。 DDoS原生防护-全力防高级版 实例 按购买的实例数量计费。 - 防护IP数 每个DDoS原生防护-全力防高级版实例防护的IP个数。 取值范围为50~500,且防护IP数必须设置为5的倍数。 防护次数 每个DDoS原生防护-全力防高级版实例防护的次数。 防护次数:无限次 购买时长 提供包月和包年的购买模式。 支持“3个月”、“6个月”或“1年”。
  • 域名 接入失败,提示“域名已存在”等信息 请根据提示信息内容进行排查: 提示“域名已存在”:在接入域名时,提示域名已存在,一般情况是该域名客户已接入过,或客户的其他账号下接入过相同域名。如需重新接入,找到相同域名或老账号下的相同域名删除后重新接入即可。如域名客户没有接入过也提示存在,可提工单联系后端研发协助排查。 提示“此域名已存在相同的域名或者其他用户已使用”:在接入域名时,如图提示此域名已存在相同的域名或其他用户已使用,一般是已有用户接入过与当前域名相同二级域名的其他域名。高防服务默认二级域名的归属权只属于一个租户,如能证明二级域名的归属,可提工单联系后端进行白名单处理。 父主题: 接入配置
  • APIG.0201报错 如果调用API时返回错误信息与错误码:"error_msg":"Backend timeout.","error_code":"APIG.0201",表示请求超时。 您可以尝试以下方案进行解决。 使用Postman等工具直接调用服务,查看是否成功,如果调用成功表示服务接口没有问题,请执行如下步骤1和步骤2进行检查: 请检查原调用请求是否过于频繁,如果是并发过大,可以通过重试机制解决,在代码里检查返回值,碰到这个并发错误可以延时一小段时间(如2-5s)重试请求;也可以后端检查上一个请求结果,上一个请求返回之后再发送下一个请求,避免请求过于频繁。 请检查音频是否过大,或网络延时过长。如果音频过大,可利用mp3格式进行压缩;如果网络延时较长,可以适当提升网络传输速度。 您可以直接使用SIS服务提供的SDK调用服务,避免出现该问题,SDK获取地址请参见获取SDK。 如以上方案无法解决问题,请联系我们。 父主题: 错误码类
  • 服务开通、关闭说明 使用SIS服务,无需显性执行开通操作, 注册华为账号 并开通华为云后,账户未欠费,即可调用SIS服务,调用成功后即认为已开通调用接口。此时计费方式为按需计费,不使用不计费。若用户从未调用过SIS服务接口,账户欠费则会被拦截,无法调用。 您也可以在控制台购买套餐包,套餐包费用为一次性支付,支付成功后即刻生效或自定义指定时间生效。套餐包到期、套餐额度使用完,会自动转为按需计费。 服务详细计费规格请参见价格计算器。
  • 请求示例 重置新用户密码,校验码为string,校验方法为string,修改原始密码Original_Password@为New_Password@ https://eihealth.cn-north-4.myhuaweicloud.com/v1/{project_id}/users/{user_id}/init-password { "code" : "string", "method" : "string", "original_password" : "Original_Password@", "new_password" : "New_Password@" }
共100000条