华为云用户手册

  • 响应示例 状态码: 200 Successful { "agency_list" : [ { "account_id" : "5146d03d8aaaaaaaaaaaabbae60620a5", "agency_name" : "example-agency-name", "permission_set_name" : "example-permission-set-name", "agency_urn" : "example-agency-urn", "description" : "example agency" } ], "page_info" : { "next_marker" : null, "current_count" : 1 } }
  • 响应示例 状态码: 200 Successful { "account_list" : [ { "account_id" : "5146d03d8aaaaaaaaaaaabbae60620a5", "account_name" : "example-account-name", "email_address" : "email@example.com" } ], "page_info" : { "next_marker" : null, "current_count" : 1 } }
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 account_list Array of objects 满足查询条件的账号对象列表。 page_info Object 包含分页信息的对象。 表4 account_list 参数 参数类型 描述 account_id String 分配给用户的账号的全局唯一标识符(ID)。 account_name String 分配给用户的账号的名称。 email_address String 分配给用户的账号的电子邮箱地址。 最小长度:1 最大长度:254 表5 page_info 参数 参数类型 描述 next_marker String 如果存在,则表示可用的输出比当前响应中包含的输出多。在对操作的后续调用中,在标签请求参数中使用此值,以获取输出的下一部分。您应该重复此操作,直到next_marker响应元素返回为null。 current_count Integer 本页返回条目数量。
  • 数据库账号权限要求 在使用DRS进行灾备时,连接业务数据库和灾备数据库的账号需要满足以下权限要求,才能启动实时灾备任务。不同类型的灾备任务,需要的账号权限也不同,详细可参考表2进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表2 数据库账号权限 类型名称 所需权限 业务数据库连接账号 需要具备如下权限: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、TRIGGER、REFEREN CES 、SHOW VIEW、EVENT、INDEX、LOCK TABLES、CREATE VIEW、 CREATE ROUTINE、 ALTER ROUTINE、 CREATE USER、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT、WITH GRANT OPTION。 GaussDB (for MySQL)实例的root账户默认已具备上述权限。 灾备 数据库连接账号 需要具备如下权限: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、TRIGGER、REFERENCES、SHOW VIEW、EVENT、INDEX、LOCK TABLES、CREATE VIEW、 CREATE ROUTINE、 ALTER ROUTINE、 CREATE USER、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT、WITH GRANT OPTION。 GaussDB(for MySQL)实例的root账户默认已具备上述权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接业务和灾备数据库的账号密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。 表2中为DRS任务所需的最小权限,如果需要DRS任务迁移grant授权的情况下,请确保DRS任务的连接账号本身具备对应权限,否则可能因为grant授权执行失败导致目标库对应用户缺少授权。例如DRS任务的连接账号本身不要求process权限,如果需要通过DRS任务迁移process授权则需要保证DRS任务的连接账号具备该权限。
  • 使用建议 灾备初始化阶段,请不要在业务数据库执行DDL操作,否则可能导致任务异常。 灾备初始化阶段,确保灾备数据库无业务写入,保证灾备前后数据一致。 数据库灾备与环境多样性和人为操作均有密切关系,为了确保灾备的平顺,建议您在进行正式的数据库灾备之前进行一次演练,可以帮助您提前发现问题并解决问题。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,选择业务低峰期开始运行灾备任务,避免灾备任务对业务造成性能影响。 在网络无瓶颈的情况下,灾备初始化阶段会对业务数据库增加约50MB/s的查询压力,以及占用2~4个CPU。 灾备无主键表时,为了确保数据一致性,会存在3s以内的单表级锁定。 正在灾备的数据被其他事务长时间锁死,可能导致读数据超时。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 灾备初始化阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。 数据对比 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。
  • 数据库账号权限要求 在使用DRS进行灾备时,连接业务数据库和灾备数据库的账号需要满足以下权限要求,才能启动实时灾备任务。不同类型的灾备任务,需要的账号权限也不同,详细可参考表2进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表2 数据库账号权限 类型名称 所需权限 业务数据库连接账号 需要具备如下权限: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、TRIGGER、REFERENCES、SHOW VIEW、EVENT、INDEX、LOCK TABLES、CREATE VIEW、 CREATE ROUTINE、 ALTER ROUTINE、 CREATE USER、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT、WITH GRANT OPTION。 RDS for MySQL实例的root账户默认已具备上述权限。 灾备数据库连接账号 需要具备如下权限: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、TRIGGER、REFERENCES、SHOW VIEW、EVENT、INDEX、LOCK TABLES、CREATE VIEW、 CREATE ROUTINE、 ALTER ROUTINE、 CREATE USER、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT、WITH GRANT OPTION。 GaussDB(for MySQL)实例的root账户默认已具备上述权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接业务和灾备数据库的账号密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。 表2中为DRS任务所需的最小权限,如果需要DRS任务迁移grant授权的情况下,请确保DRS任务的连接账号本身具备对应权限,否则可能因为grant授权执行失败导致目标库对应用户缺少授权。例如DRS任务的连接账号本身不要求process权限,如果需要通过DRS任务迁移process授权则需要保证DRS任务的连接账号具备该权限。
  • 使用建议 灾备初始化阶段,请不要在业务数据库执行DDL操作,否则可能导致任务异常。 灾备初始化阶段,确保灾备数据库无业务写入,保证灾备前后数据一致。 数据库灾备与环境多样性和人为操作均有密切关系,为了确保灾备的平顺,建议您在进行正式的数据库灾备之前进行一次演练,可以帮助您提前发现问题并解决问题。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,选择业务低峰期开始运行灾备任务,避免灾备任务对业务造成性能影响。 在网络无瓶颈的情况下,灾备初始化阶段会对业务数据库增加约50MB/s的查询压力,以及占用2~4个CPU。 灾备无主键表时,为了确保数据一致性,会存在3s以内的单表级锁定。 正在灾备的数据被其他事务长时间锁死,可能导致读数据超时。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 灾备初始化阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。 数据对比 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。
  • 使用建议 灾备初始化阶段,请不要在业务数据库执行DDL操作,否则可能导致任务异常。 灾备初始化阶段,确保灾备数据库无业务写入,保证灾备前后数据一致。 数据库灾备与环境多样性和人为操作均有密切关系,为了确保灾备的平顺,建议您在进行正式的数据库灾备之前进行一次演练,可以帮助您提前发现问题并解决问题。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,选择业务低峰期开始运行灾备任务,避免灾备任务对业务造成性能影响。 在网络无瓶颈的情况下,灾备初始化阶段会对业务数据库增加约50MB/s的查询压力,以及占用2~4个CPU。 灾备无主键表时,为了确保数据一致性,会存在3s以内的单表级锁定。 正在灾备的数据被其他事务长时间锁死,可能导致读数据超时。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 灾备初始化阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。 数据对比 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。
  • 数据库账号权限要求 在使用DRS进行灾备时,连接业务数据库和灾备数据库的账号需要满足以下权限要求,才能启动实时灾备任务。不同类型的灾备任务,需要的账号权限也不同,详细可参考表2进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表2 数据库账号权限 类型名称 所需权限 业务数据库连接账号 需要具备如下权限: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、TRIGGER、REFERENCES、SHOW VIEW、EVENT、INDEX、LOCK TABLES、CREATE VIEW、 CREATE ROUTINE、 ALTER ROUTINE、 CREATE USER、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT、WITH GRANT OPTION,RDS for MySQL实例的root账户默认已具备上述权限。当业务数据库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。 灾备数据库连接账号 需要具备如下权限: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、TRIGGER、REFERENCES、SHOW VIEW、EVENT、INDEX、LOCK TABLES、CREATE VIEW、 CREATE ROUTINE、 ALTER ROUTINE、 CREATE USER、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT、WITH GRANT OPTION,RDS for MySQL实例的root账户默认已具备上述权限。当灾备数据库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接业务和灾备数据库的账号密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。 表2中为DRS任务所需的最小权限,如果需要DRS任务迁移grant授权的情况下,请确保DRS任务的连接账号本身具备对应权限,否则可能因为grant授权执行失败导致目标库对应用户缺少授权。例如DRS任务的连接账号本身不要求process权限,如果需要通过DRS任务迁移process授权则需要保证DRS任务的连接账号具备该权限。
  • 数据库账号权限要求 在使用DRS进行灾备时,连接业务数据库和灾备数据库的账号需要满足以下权限要求,才能启动实时灾备任务。不同类型的灾备任务,需要的账号权限也不同,详细可参考表2进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表2 数据库账号权限 类型名称 所需权限 业务数据库连接账号 需要具备如下权限: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、TRIGGER、REFERENCES、SHOW VIEW、EVENT、INDEX、LOCK TABLES、CREATE VIEW、 CREATE ROUTINE、 ALTER ROUTINE、 CREATE USER、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT、WITH GRANT OPTION。 GaussDB(for MySQL)实例的root账户默认已具备上述权限。 灾备 数据库连接账号 需要具备如下权限: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、TRIGGER、REFERENCES、SHOW VIEW、EVENT、INDEX、LOCK TABLES、CREATE VIEW、 CREATE ROUTINE、 ALTER ROUTINE、 CREATE USER、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT、WITH GRANT OPTION。 GaussDB(for MySQL)实例的root账户默认已具备上述权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接业务和灾备数据库的账号密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。 表2中为DRS任务所需的最小权限,如果需要DRS任务迁移grant授权的情况下,请确保DRS任务的连接账号本身具备对应权限,否则可能因为grant授权执行失败导致目标库对应用户缺少授权。例如DRS任务的连接账号本身不要求process权限,如果需要通过DRS任务迁移process授权则需要保证DRS任务的连接账号具备该权限。
  • 使用建议 灾备初始化阶段,请不要在业务数据库执行DDL操作,否则可能导致任务异常。 灾备初始化阶段,确保灾备数据库无业务写入,保证灾备前后数据一致。 数据库灾备与环境多样性和人为操作均有密切关系,为了确保灾备的平顺,建议您在进行正式的数据库灾备之前进行一次演练,可以帮助您提前发现问题并解决问题。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,选择业务低峰期开始运行灾备任务,避免灾备任务对业务造成性能影响。 在网络无瓶颈的情况下,灾备初始化阶段会对业务数据库增加约50MB/s的查询压力,以及占用2~4个CPU。 灾备无主键表时,为了确保数据一致性,会存在3s以内的单表级锁定。 正在灾备的数据被其他事务长时间锁死,可能导致读数据超时。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 灾备初始化阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。 数据对比 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。
  • 数据库账号权限要求 在使用DRS进行灾备时,连接业务数据库和灾备数据库的账号需要满足以下权限要求,才能启动实时灾备任务。不同类型的灾备任务,需要的账号权限也不同,详细可参考表2进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表2 数据库账号权限 类型名称 所需权限 业务数据库连接账号 DDM账户至少需要具备一个权限,比如SELECT权限。 灾备数据库连接账号 DDM账户至少需要具备一个权限,比如SELECT权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接业务和灾备数据库的账号密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。
  • 使用建议 灾备初始化阶段,请不要在业务数据库执行DDL操作,否则可能导致任务异常。 灾备初始化阶段,确保灾备数据库无业务写入,保证灾备前后数据一致。 数据库灾备与环境多样性和人为操作均有密切关系,为了确保灾备的平顺,建议您在进行正式的数据库灾备之前进行一次演练,可以帮助您提前发现问题并解决问题。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,选择业务低峰期开始运行灾备任务,避免灾备任务对业务造成性能影响。 在网络无瓶颈的情况下,灾备初始化阶段会对业务数据库增加约50MB/s的查询压力,以及占用2~4个CPU。 灾备无主键表时,为了确保数据一致性,会存在3s以内的单表级锁定。 正在灾备的数据被其他事务长时间锁死,可能导致读数据超时。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 灾备初始化阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。 数据对比 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。
  • 数据库账号权限要求 在使用DRS进行灾备时,连接业务数据库和灾备数据库的账号需要满足以下权限要求,才能启动实时灾备任务。不同类型的灾备任务,需要的账号权限也不同,详细可参考表2进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表2 数据库账号权限 类型名称 所需权限 业务数据库连接账号 需要具备如下权限: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、TRIGGER、REFERENCES、SHOW VIEW、EVENT、INDEX、LOCK TABLES、CREATE VIEW、 CREATE ROUTINE、 ALTER ROUTINE、 CREATE USER、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT、WITH GRANT OPTION,RDS for MySQL实例的root账户默认已具备上述权限。当业务数据库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。 灾备数据库连接账号 需要具备如下权限: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、TRIGGER、REFERENCES、SHOW VIEW、EVENT、INDEX、LOCK TABLES、CREATE VIEW、 CREATE ROUTINE、 ALTER ROUTINE、 CREATE USER、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT、WITH GRANT OPTION,RDS for MySQL实例的root账户默认已具备上述权限。当灾备数据库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接业务和灾备数据库的账号密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。 表2中为DRS任务所需的最小权限,如果需要DRS任务迁移grant授权的情况下,请确保DRS任务的连接账号本身具备对应权限,否则可能因为grant授权执行失败导致目标库对应用户缺少授权。例如DRS任务的连接账号本身不要求process权限,如果需要通过DRS任务迁移process授权则需要保证DRS任务的连接账号具备该权限。
  • 使用建议 灾备初始化阶段,请不要在业务数据库执行DDL操作,否则可能导致任务异常。 灾备初始化阶段,确保灾备数据库无业务写入,保证灾备前后数据一致。 数据库灾备与环境多样性和人为操作均有密切关系,为了确保灾备的平顺,建议您在进行正式的数据库灾备之前进行一次演练,可以帮助您提前发现问题并解决问题。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,选择业务低峰期开始运行灾备任务,避免灾备任务对业务造成性能影响。 在网络无瓶颈的情况下,灾备初始化阶段会对业务数据库增加约50MB/s的查询压力,以及占用2~4个CPU。 灾备无主键表时,为了确保数据一致性,会存在3s以内的单表级锁定。 正在灾备的数据被其他事务长时间锁死,可能导致读数据超时。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 灾备初始化阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。 数据对比 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。
  • 热数据存储资源于2024年5月27日价格调整通知 华为云 数据仓库 服务DWS热数据存储资源于2024年5月27日00:00(北京时间)价格调整通知 尊敬的华为云客户: 华为云对数据仓库服务DWS对以下区域的热数据存储资源进行价格调整,新价格于2024/05/27 00:00(北京时间)正式生效,具体价格详情如下: 表1 亚太-雅加达 调整前价格 调整后价格 热数据存储资源 按小时(元/GB/小时) 包月(元/ GB/月) 包1年(元/ GB/年) 包2年(元/ GB/2年) 包3年(元/ GB/3年) 按小时(元/ GB/小时) 包月(元/ GB/月) 包1年(元/ GB/年) 包2年(元/ GB/2年) 包3年(元/ GB/3年) DWS3.0热数据存储 0.0093 4.45 44.52 74.79 96.16 0.005 2.4 24 40.32 51.84 表2 欧洲-都柏林 调整前价格 调整后价格 热数据存储资源 按小时(元/GB/小时) 包月(元/ GB/月) 包1年(元/ GB/年) 包2年(元/ GB/2年) 包3年(元/ GB/3年) 按小时(元/ GB/小时) 包月(元/ GB/月) 包1年(元/ GB/年) 包2年(元/ GB/2年) 包3年(元/ GB/3年) DWS2.0热数据存储 0.01113 5.3424 53.424 89.75232 115.39584 0.0056 2.688 26.88 45.16 58.06 如您有任何问题,可随时通过工单或者服务热线(4000-955-988或950808)与我们联系。 感谢您对华为云的支持! 父主题: 产品公告
  • 操作流程 将既有项目部署到FunctionGraph通常只需要:修改项目监听端口号为8000,然后在jar包同目录创建bootstrap文件写入执行jar包的命令。 本案例使用IntelliJ IDEA,Maven项目。 构建代码包 打开Springboot项目,在maven插件处单击package,生成jar包。 图1 生成jar包 配置工程web端口。HTTP函数当前支持8000端口,需配置工程web端口为 8000(此端口请勿修改), 可以使用application.properties文件来配置,也可以在启动时指定端口号。 图2 配置8000端口 在jar包同目录创建bootstrap文件,输入启动参数。 /opt/function/runtime/java11/rtsp/jre/bin/java -jar -Dfile.encoding=utf-8 /opt/function/code/rest-service-complete-0.0.1-SNAPSHOT.jar 图3 输入启动参数 选中jar包和bootstrap文件,打包成zip包。 创建HTTP函数并上传代码 创建1个HTTP函数,并上传已打包的zip包。请参见创建HTTP函数。 验证结果 使用函数测试事件验证 在函数详情页,选择函数版本,单击“配置测试事件”,弹出“配置测试事件”页。 选择事件模板,修改测试事件中的path、pathParameters参数,构建一个简单的Get请求。 图4 配置测试事件 单击“创建”,完成测试事件创建。 单击“测试”,获取响应。 建议在测试时函数内存规格、超时时间调大,如512MB、5s。 图5 查看函数返回结果 配置APIG触发器测试 请参见使用APIG触发器,创建APIG触发器,“安全认证”建议选择“None”,方便调试。 复制生成的调用URL在浏览器进行访问。如图 调用函数所示,在URL后添加请求参数greeting?name=fg_user,响应如下。 图6 调用函数 默认生成的APIG触发器的调用URL为“域名/函数名”,在本案例中即:https://your_host.com/springboot_demo,URL中包含了函数名springboot_demo作为path的第一部分。如果直接Get https://your_host.com/springboot_demo/greeting,springboot接收到的请求地址将包含springboot_demo/greeting两部分。此处需注意: 如果用户直接把已有的工程上传,会因为path里多了函数名而无法直接访问自己的服务。因此,请参考以下两种方法注解或去除函数名。 方法一:修改代码中的Mapping地址,例如在GetMapping注解或者类注解上添加默认的path第一部分。 图7 修改Mapping地址 方法二:单击触发器名称,跳转至API网关服务,直接修改path去除函数名。
  • 方案概述 本章节主要指导使用Springboot开发应用的用户,部署业务到FunctionGraph。 用户通常可以使用SpringInitializr或者IntelliJ IDEA新建等多种方式构建SpringBoot,本章节以Spring.io 的https://spring.io/guides/gs/rest-service/ 项目为例,使用HTTP函数的方式部署到FunctionGraph上。
  • 触发函数自动运行 上传文件至dew-bucket-input桶,OBS生成事件触发函数运行,对文件加解密,输出文件存放在dew-bucket-output桶中。可以在fss_examples_dew函数详情页“日志”页签查看函数运行日志。 进入dew-bucket-output桶对象界面,可以看到输出的图片image.jpg.encrypt,如图2所示。单击操作列的“下载”可将文件下载至本地查看处理效果。 图2 输出文件
  • 请求参数代码定义示例 在FunctionGraph中开发函数,以python2.7语言为例,函数代码需要满足如下条件。 函数有明确的接口定义,如下所示: def handler (event, context) 入口函数名(handler):入口函数名称,需和函数执行入口处用户自定义的入口函数名称一致。 执行事件(event): 函数执行界面由用户输入的执行事件参数, 格式为JSON对象。 上下文环境(Context):Runtime提供的函数执行上下文,其接口定义在SDK接口说明。 执行事件(event)支持三种请求参数定义,格式为: Header中的请求参数:event["headers"]["参数名"] Query中的请求参数:event["queryStringParameters"]["参数名"] 您自定义的用户数据:event["user_data"] 函数代码获取的三种请求参数与API网关自定义认证中的参数关系如下所示: Header中的请求参数:对应自定义认证中参数位置为Header的身份来源,其参数值在您调用使用该前端自定义认证的API时传入 Query中的请求参数:对应自定义认证中参数位置为Query的身份来源,其参数值在您调用使用该前端自定义认证的API时传入 您自定义的用户数据:对应自定义认证中的用户数据,其参数值在您创建自定义认证时输入 函数的返回值不能大于1M,必须满足如下格式: { "statusCode":200, "body": "{\"status\": \"allow\", \"context\": {\"user\": \"abc\"}}" } 其中,body字段的内容为字符串格式,json解码之后为: { "status": "allow/deny", "context": { "user": "abc" } } “status”字段为必选,用于标识认证结果。只支持“allow”或“deny”,“allow”表示认证成功,“deny”表示认证失败。 “context”字段为可选,只支持字符串类型键值对,键值不支持JSON对象或数组。 context中的数据为您自定义的字段,认证通过后作为认证参数映射到API网关后端参数中,其中context中的参数名称与系统参数名称必须完全一致,且区分大小写,context中的参数名称必须以英文字母开头,支持英文大小写字母、数字、下划线和中划线,且长度为1 ~ 32个字符。 Header中的请求参数定义代码示例: # -*- coding:utf-8 -*- import json def handler(event, context): if event["headers"].get("auth")=='abc': resp = { 'statusCode': 200, 'body': json.dumps({ "status":"allow", "context":{ "user":"success" } }) } else: resp = { 'statusCode': 200, 'body': json.dumps({ "status":"deny", }) } return json.dumps(resp) Query中的请求参数定义代码示例: # -*- coding:utf-8 -*- import json def handler(event, context): if event["queryStringParameters"].get("test")=='abc': resp = { 'statusCode': 200, 'body': json.dumps({ "status":"allow", "context":{ "user":"abcd" } }) } else: resp = { 'statusCode': 200, 'body': json.dumps({ "status":"deny", }) } return json.dumps(resp) 用户数据定义代码示例: # -*- coding:utf-8 -*- import json def handler(event, context): if event.get("user_data")=='abc': resp = { 'statusCode': 200, 'body': json.dumps({ "status":"allow", "context":{ "user":"abcd" } }) } else: resp = { 'statusCode': 200, 'body': json.dumps({ "status":"deny", }) } return json.dumps(resp)
  • 集成客户端UI SDK 下载客户端SDK开发包以及二次开发文档。 在集成开发客户端SDK的过程中,除本开发指南外,开发者还需要查看本《客户端SDK参考》。 请参考《客户端SDK参考》中的“资源下载”获取SDK开发包,Demo源代码在SDK包中。 试用Demo。 华为云会议为每个平台SDK提供了Demo安装包,开发者可以下载Demo,快速体验功能的运行和调试。 请参考《客户端SDK参考》中每个平台SDK下的“Demo安装包下载”试用Demo。 准备开发环境。 开发环境准备 不同平台的开发工具及环境要求。详见《客户端SDK参考》中对应平台下的“快速入门”。 调测环境准备 订购华为云会议服务后或者申请免费试用账号后,调用客户端SDK。 调用SDK集成开发。 开发者可以在自己对应要开发的平台上集成华为云会议对应平台的SDK接口。 详细开发方法参见《客户端SDK参考》。 功能调试。 开发完成后,可以接入华为云会议调试环境进行功能调试。
  • 集成服务端REST API 下载服务端集成开发工具以及二次开发文档。 在集成开发服务端API的过程中,除本开发指南外,开发者还需要参考《服务端API参考》。 准备开发环境。 订购华为云会议服务,基于业务账号调用服务端API,接入地址是“https://api.meeting.huaweicloud.com”。 集成登录鉴权。 第三方系统在直接调用云会议功能前,需要先调用鉴权接口,完成第三方应用账号向会议服务端的鉴权。详细开发方法参见《服务端API参考》中的“登录鉴权”章节。 图17 服务端鉴权集成 调用REST接口集成开发。 在完成鉴权调用后,开发者可以在第三方应用系统上集成华为云会议的服务端功能接口。 详细开发方法参见《服务端API参考》。 功能调试。 开发完成后,可以接入华为云会议调试环境(https://api.meeting.huaweicloud.com)进行功能调试。 华为云会议提供的每个服务端REST API都可以在华为云的 API Explorer 上调试。
  • 账号/密码鉴权方式(不推荐) 图2 账号/密码鉴权方式集成 使用账号/密码鉴权方式与华为云会议账号集成时,需要调用服务端的REST API创建用户账号,并且在第三方系统中维护第三方的user id和华为云会议账号的绑定关系。 使用已经发放好的华为云会议账号和密码,调用鉴权接口获取接入Token。 调用其他需指定用户的管理接口(比如邀请与会者)时带上接入Token,以及华为云会议账号(account)。 这种鉴权模式下,第三方系统需要为第三方User ID绑定华为云会议用户账号,第三方User ID和华为云会议用户账号是1:1映射的。 图3 第三方账号与华为云会议账号的绑定关系 第三方User ID和华为云会议用户账号也可以是n:1,但是需要第三方系统自己负责账号的绑定和解绑定。
  • 最佳实践1:鉴权登录 开发者集成华为云会议服务端API时,推荐使用App ID鉴权方式,鉴权通过后可以获取接入Token。第一次鉴权通过后,华为云会议后台会自动为第三方的用户应用分配一个华为云会议账号。 图2 APP ID鉴权 登录成功后,华为云会议会自动给第三方应用分配华为云会议账号。这个绑定关系由华为云会议维护,第三方开发者不用关注华为云会议账号。 表2 第三方账号和华为云会议账号的映射关系 第三方账号 华为云会议账号 15012345678 Auto-94b91e94ce3f4ddab9ecfe7625418e60 18012345678 Auto-7700ebc37cf580a680cdfde4b34b41d0
  • 开放性应用实践概览 华为云会议提供了服务端API开放和客户端SDK开放,开发者基于自己的应用场景可以灵活地集成华为云会议的开放性接口。本文介绍了几个基于华为云会议集成的最佳实践,帮助开发者了解几种典型场景下的集成方案,以管窥豹,快速掌握基于华为云会议的集成开发能力。 图1 开放性应用实践概览 表1 服务端API集成实践 实践 应用场景 实践1:鉴权登录 服务端API调用前需要鉴权登录后获取接入Token,开放者通过App ID鉴权接口完成鉴权登录,并获取接入Token。 实践2:创建会议 服务端创建会议:用户已有的管理系统可集成华为会议服务的会议管理接口,可以调用服务端API创建会议。 客户端创建会议:用户可以在客户端上直接创建立即开始的会议或者预约会议。 实践3:加入会议 服务端拉起与会者:调用服务端API,添加与会者。与会者收到会议来电并加入会议。 客户端主动入会:用户可以,通过输入会议ID/密码入会;单击邮件链接入会;单击Web链接入会;在微信/微信小程序中单击链接入会。 实践4:离开会议 服务端结束会议:调用服务端API,结束会议。 客户端离开/结束会议:用户在会中界面上结束会议和离开会议。
  • 集成UI SDK的第三方客户端App ID鉴权 第三方客户端初始化SDK时,需要传入事先申请好的App ID。 Android SDK的初始化接口,请参考《客户端SDK参考》中“Android SDK”的“初始化”章节。 iOS SDK的初始化接口,请参考《客户端SDK参考》中“iOS SDK”的“初始化”章节。 Windows SDK的初始化接口,请参考《客户端SDK参考》中“Windows SDK”的“初始化”章节。 Mac SDK的初始化接口,请参考《客户端SDK参考》中“Mac SDK”的“初始化”章节。 第三方客户端登录时,从第三方服务端获取Signature、ExpireTime和Nonce后,调用终端SDK的Login接口完成鉴权。 Android SDK的Login接口,请参考《客户端SDK参考》中“Android SDK”的“登录”章节。 iOS SDK的Login接口,请参考《客户端SDK参考》中“iOS SDK”的“登录”章节。 Windows SDK的Login接口,请参考《客户端SDK参考》中“Windows SDK”的“登录”章节。 Mac SDK的Login接口,请参考《客户端SDK参考》中“Mac SDK”的“登录”章节。
  • App ID鉴权原理 第三方客户端App ID鉴权原理 图1 第三方客户端App ID鉴权流程 鉴权前提: 开发者在华为云会议控制台上为自己的应用申请App ID,并获取App ID和App Key。 开发者在自己的服务端集成Signature生成算法,请参考“第三方服务集成Signature生成算法”。 SDK初始化时传入App ID,请参考《客户端SDK参考》中的“初始化”部分。 鉴权过程: 第三方客户端将User ID(第三方User ID)发送给第三方服务器。 第三方服务器根据App ID、User ID、App Key等,生成鉴权用的签名材料Signature。 第三方服务端返回Signature,以及ExpireTime和Nonce值。 第三方客户端调用客户端SDK的Login接口,参数为User ID、Signature、ExpireTime和Nonce。 客户端SDK向华为云会议服务端发起鉴权。 鉴权通过后SDK获取接入Token。该Token对第三方客户端不可见,由SDK负责维护和刷新。 第三方服务App ID鉴权原理 图2 第三方服务端App ID鉴权流程 鉴权前提: 开发者在华为云会议控制台上为自己的应用申请App ID,并获取App ID和App Key。 开发者在自己的服务端集成Signature生成算法,请参考“第三方服务集成Signature生成算法”。 鉴权过程: 第三方服务端根据调用的业务接口所需的User ID(第三方User ID),加上App ID、App Key、ExpireTime和Nonce,生成鉴权用的签名材料Signature。 第三方服务端调用华为云会议服务端的App ID鉴权接口(REST接口)。 华为云会议服务端鉴权通过后,返回接入Token。 第三方服务端使用接入Token调用其他业务接口。
  • App ID的申请 使用华为云账号,登录华为云会议控制台。前提是该华为云账号已经购买了华为云会议服务或者已经绑定了华为云会议企业管理员账号,请参考“开发流程”章节中的“开发前准备”。 单击“应用管理”,再单击“申请应用”。在弹出的创建应用的输入框中输入第三方应用的名称及描述。 图3 申请应用 请填写真实的联系人姓名和手机号码。 申请提交后,华为云会议工作人员会在1~3个工作日内完成审核和审批。 生成App Key 审批通过后,单击“生成AppKey”再单击“确认”生成App Key。 图4 生成App Key App Key是生成鉴权签名材料Signature的密钥,需要在第三方服务端妥善保存,不要泄露出去,否则会出现被盗用会议资源的风险。 App Key只能保存在第三方服务端,不能保存在第三方终端中,否则很容易被反编译获取。 App Key需要妥善保存,遗失后只能重置,不能找回。重新生成App Key原来的App Key将会在一个月后失效。
  • 响应消息示例 HTTP/1.1 200 Date: Wed, 18 Dec 2019 06:20:40 GMT Content-Type: application/json;charset=UTF-8 Content-Length: 2450 Connection: keep-alive Expires: 0 Pragma: No-cache Cache-Control: no-cache http_proxy_id: 6fba0eff9f832b463580fb06c5b0ff9c Server: api-gateway X-Request-Id: ac9f75ec3c97c823f128526a924532b2 { "data": [ { "conferenceID": "914083136", "mediaTypes": "Data,Video,Voice", "subject": "user01的会议", "size": 1, "timeZoneID": "56", "startTime": "2019-12-18 07:28", "endTime": "2019-12-18 09:28", "conferenceState": "Created", "accessNumber": "+991117", "language": "zh-CN", "passwordEntry": [ { "conferenceRole": "chair", "password": "******" }, { "conferenceRole": "general", "password": "******" } ], "userUUID": "ff808081699b56cb0169be103500012b", "scheduserName": "user8002", "multiStreamFlag": 1, "conferenceType": 0, "confType": "IMMEDIATELY", "isAutoMute": 1, "isAutoRecord": 0, "chairJoinUri": "https://c.meeting.huaweicloud.com/#/j/914083136/6a30b8b5a325105da031442627828e496f91021ece36405f", "guestJoinUri": "https://c.meeting.huaweicloud.com/#/j/914083136/9505dc3349228b1ce0db8165590cc977bcff89785130fe0d", "recordType": 0, "recordAuxStream": 0, "confConfigInfo": { "isSendNotify": true, "isSendSms": true, "isAutoMute": true }, "vmrFlag": 0, "scheduleVmr": false, "isHasRecordFile": false, "partAttendeeInfo": [ { "phone": "+99111*****815", "name": "user01", "role": 0, "isMute": 0, "type": "normal" } ], "terminlCount": 0, "normalCount": 1, "deptName": "wangyue", "confUUID": "050c7898216811eaa6958bf3bb9ac167" } ], "offset": 0, "limit": 20, "count": 1 }
  • 请求消息示例 GET /v1/mmc/management/conferences Connection: keep-alive X-Access-Token: stbX5ElstO5QwOwPB9KGQWUZ1DHoFrTsQjjC user-agent: WeLink -desktop Host: api.meeting.huaweicloud.com User-Agent: Apache-HttpClient/4.5.3 (Java/1.8.0_191)
共100000条