华为云用户手册

  • 前提条件 如果您还没有目标Redis,请先创建目标Redis,具体操作请参考购买Redis实例。 如果您已有目标Redis,则不需要重复创建,为了对比迁移前后数据及预留足够的内存空间,建议在数据迁移之前清空目标实例数据,清空操作请参考清空Redis实例数据。如果没有清空实例数据,数据迁移后,目标Redis与源Redis实例重复的数据迁移后会被覆盖,源Redis没有、目标Redis有的数据会保留。 已创建弹性 云服务器ECS ,创建弹性云服务器的方法,请参见创建弹性云服务器。 E CS 请选择与DCS Cluster集群实例相同虚拟私有云、子网和安全组,并且需要绑定弹性公网IP。 自建的源Redis Cluster集群如果是在本地或者其他云厂商的服务器上自建,需要允许被公网访问。
  • 迁移步骤 分别在华为云ECS和源端转发服务器上安装Nginx,本文以ECS操作系统为Centos7.x为例进行安装,不同操作系统命令稍有不同。 执行以下命令,添加Nginx到yum源。 sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 添加完之后,执行以下命令,查看是否已经添加成功。 yum search nginx 添加成功之后,执行以下命令,安装Nginx。 sudo yum install -y nginx 执行以下命令安装stream模块。 yum install nginx-mod-stream --skip-broken 启动Nginx并设置为开机自动运行。 sudo systemctl start nginx.service sudo systemctl enable nginx.service 在本地浏览器中输入服务器地址(ECS公网IP地址),查看安装是否成功。 如果出现下面页面,则表示安装成功。 在源端Redis添加源端转发服务器的白名单。 在源端转发服务器配置安全组。 获取华为云ECS的公网IP地址。 配置源端转发服务器安全组入方向,添加华为云ECS的公网IP地址,并放开来自华为云ECS访问请求的端口(以6379为例)。 配置源端转发服务器的Nginx转发配置。 登录Linux源端转发服务器,执行命令打开并修改配置文件。 cd /etc/nginx vi nginx.conf 转发配置示例如下: stream { server { listen 6379; proxy_pass {source_instance_address}:{port}; } } 其中,6379为源端转发服务器本机监听端口,{source_instance_address}和{port}为源端Redis实例的连接地址和端口。 配置目的:通过访问源端转发服务器本机监听端口6379,访问源端Redis。 注意:以上配置必须配置在如下图所示的位置。 图2 配置位置要求 重启Nginx服务。 service nginx restart 验证启动是否成功。 netstat -an|grep 6379 端口在监听状态,Nginx启动成功。 图3 验证结果 配置华为云ECS的Nginx转发配置。 登录Linux华为云ECS,执行命令打开并修改配置文件。 cd /etc/nginx vi nginx.conf 配置示例如下: stream { server { listen 6666; proxy_pass {source_ecs_address}:6379; } } 其中,6666为华为云ECS本机监听端口,{source_ecs_address}为源端转发服务器公网IP地址,6379为源端转发服务器Nginx的监听端口。 配置目的:通过访问华为云ECS本机监听端口6666,访问源端转发服务器。 注意:以上配置必须配置在如下图所示的位置。 图4 配置位置要求 重启Nginx服务。 service nginx restart 验证启动是否成功。 netstat -an|grep 6666 端口在监听状态,Nginx启动成功。 图5 验证结果 在华为云ECS执行以下命令测试6666端口的网络连接。 redis-cli -h {target_ecs_address} -p 6666 -a {password} 其中,{target_ecs_address}为华为云ECS公网IP地址,6666为华为云ECS监听端口,{password}为源端Redis密码,如无密码可不填。 图6 连接示例 准备迁移工具RedisShake。 登录华为云ECS。 在华为云ECS中执行以下命令下载RedisShake,本文以下载2.0.3版本为例进行说明。您可以根据实际需要下载其他RedisShake版本。 wget https://github.com/tair-opensource/RedisShake/releases/download/release-v2.0.3-20200724/redis-shake-v2.0.3.tar.gz 执行命令解压RedisShake文件。 tar -xvf redis-shake-v2.0.3.tar.gz 配置RedisShake的配置文件。 执行命令进入解压后的目录。 cd redis-shake-v2.0.3 修改配置文件redis-shake.conf。 vim redis-shake.conf 修改源端Redis信息配置: source.type 源端redis实例类型,单机、主备、proxy集群实例都选择standalone,cluster实例选择cluster。 source.address 华为云ECS公网IP地址和映射源端转发服务器的端口(华为云ECS监听端口6666),用英文冒号隔开。 source.password_raw 源端待迁移Redis实例的密码,如未设置密码,无需填写。 修改目标端DCS信息配置: target.type 华为云Redis实例类型,单机、主备、proxy集群实例都选择standalone,cluster实例选择cluster。 target.address 华为云Redis实例的连接地址和端口,用英文冒号隔开。 target.password_raw 华为云Redis实例的密码,如未设置密码,无需填写。 按下Esc键退出编辑模式,输入:wq!按回车键保存配置并退出编辑界面。 执行命令启动RedisShake并使用rump(在线全量)模式开始数据迁移。 ./redis-shake.linux -conf redis-shake.conf -type rump 图7 迁移过程 图8 迁移结果 迁移完成后,请使用redis-cli工具连接源Redis和目标Redis,确认数据的完整性。 分别连接源Redis和目标Redis。 连接操作请参考redis-cli连接。 输入info keyspace,查看keys参数和expires参数的值。 对比源Redis和目标Redis的keys参数分别减去expires参数的差值。如果差值一致,表示数据完整,迁移正常。 删除RedisShake配置文件。
  • 约束与限制 Rump模式不支持增量数据迁移,建议您先停止源端Redis的写入再进行迁移,防止数据不一致。 该方案配置只支持同DB映射迁移,异DB映射迁移该方案配置不适用。 源端为多DB使用(有非DB0的DB使用),华为云DCS为Proxy集群时,DCS需要开启多DB模式,否则会迁移失败(单DB0的Proxy集群不支持select命令)。 源端为多DB使用(有非DB0的DB使用),华为云DCS为Cluster集群时,该方案不支持(DCS Cluster集群只支持DB0模式)。
  • 导出备份文件 执行命令进入解压后的RedisShake文件目录。 cd redis-shake-v2.0.3 编辑RedisShake工具配置文件redis-shake.conf,补充源端所有master节点的连接信息。 vim redis-shake.conf 修改内容如下: source.type = cluster #如果无密码,本项不填 source.password_raw = {source_redis_password} #源Cluster集群所有master节点的IP地址与端口,以分号分隔 source.address = {master1_ip}:{master1_port};{master2_ip}:{master2_port}…{masterN_ip}:{masterN_port} 修改后按下Esc键退出编辑模式,输入:wq!按回车键保存配置并退出编辑界面。 执行以下命令导出源Redis集群的RDB格式备份文件。 ./redis-shake -type dump -conf redis-shake.conf 执行日志中出现如下信息时导出备份文件完成: execute runner[*run.CmdDump] finished!
  • 安装RedisShake 登录弹性云服务器ECS。 在ECS中执行以下命令下载RedisShake。本文以下载2.1.2版本为例,您可以根据实际需要下载其他RedisShake版本。 wget https://github.com/tair-opensource/RedisShake/releases/download/release-v2.1.2-20220329/release-v2.1.2-20220329.tar.gz 执行命令解压RedisShake文件。 tar -xvf redis-shake-v2.1.2.tar.gz 如果源Cluster部署在数据中心内网,则需在内网服务器上安装RedisShake,并参考导出备份文件导出源Cluster备份文件,然后将备份文件上传到云服务器。
  • 导入备份文件 将导出的RDB备份文件(含多个)上传到与云服务器上。云服务器与目标端DCS Cluster集群实例的网络连通。 编辑RedisShake工具配置文件redis-shake.conf。补充目标端所有master节点的连接信息。 vim redis-shake.conf 修改内容如下: target.type = cluster #如果无密码,本项不填 target.password_raw = {target_redis_password} #目标Cluster集群所有master节点的IP地址与端口,以分号分隔 target.address = {master1_ip}:{master1_port};{master2_ip}:{master2_port}…{masterN_ip}:{masterN_port} #需要导入的rdb文件列表,用分号分隔 rdb.input = {local_dump.0};{local_dump.1};{local_dump.2};{local_dump.3} 修改后按下Esc键退出编辑模式,输入:wq!按回车键保存配置并退出编辑界面。 使用如下命令导入RDB备份文件到目标Cluster集群: ./redis-shake -type restore -conf redis-shake.conf 执行日志中出现如下信息时导入备份文件完成: Enabled http stats, set status (incr), and wait forever.
  • 获取源Redis和目标Redis节点信息 分别连接源端和目标端Redis。连接Redis的方法请参考Redis-cli客户端连接Redis。 在线迁移Cluster集群时需要将Cluster集群各个节点数据分别迁移。执行如下命令分别查询源端和目标Cluster集群的所有节点的IP地址与端口: redis-cli -h {redis_address} -p {redis_port} -a {redis_password} cluster nodes {redis_address}为Redis的连接地址,{redis_port}为Redis的端口,{redis_password}为Redis的连接密码。 在命令返回的结果中,获取所有master节点的IP端口,如下如所示:
  • 数据迁移 GES数据迁移功能提供了一键式从常见的关系型数据库(MySQL、Oracle、神通MPP)以及大数据组件(DWS、Hive)将数据导入到图实例的能力。用户只需要将原始数据预处理成GES所需要的点边表,就可以通过界面化操作将这些点边表导入到图实例,省去了之前繁琐的生成元数据、导出成csv、上传到OBS、从OBS导入到GES等复杂的中间步骤,极大地方便了用户数据入图的操作。 数据迁移会把数据库各个表中的全部数据作为点或者边数据集导入到图实例,因此需要确保数据库中的表已经被处理为点或者边数据。 点边表中支持的数据类型,参考一般图数据格式章节中的属性说明。 点表格式:点ID列名,点Label列名,点属性列名1,点属性列名2,... 图1 点表格式 点表的数据如下图所示: 图2 点表数据 边表格式:源点ID列名,终点ID列名,边Label列名,边属性列名1,边属性列名2,... 图3 边表格式 边表的数据如下图所示: 图4 边表的数据 新建数据源 新建数据迁移任务
  • 准备环境 在使用图像识别SDK时,各语言需要准备的环境 参照表1。 表1 开发环境 开发语言 准备项 说明 JAVA 安装JDK JAVA环境开发配置,支持 Java JDK 1.8 及以上版本,推荐通过Maven 安装依赖的方式使用JAVA版本SDK。 PYTHON 安装python python版本sdk支持python3.3及以上版本。 .NET 安装.NET .NET Standard 2.0 及其以上版本或C# 4.0 及其以上版本。 GO 安装go 支持 go 1.14 及以上版本。 PHP 安装PHP 支持PHP 5.6 及以上版本。 C++ 安装C++ 支持 C++ 14 及以上版本,要求安装 CMake 3.10 及以上版本。
  • SDK列表及指导文档(通用版) API Explorer 能根据需要动态生成SDK代码功能,降低您使用SDK的难度,推荐使用。 SDK中心 https://sdkcenter.developer.huaweicloud.com/zh-cn提供服务SDK依赖引入的方式。 表1 提供了各个云服务支持的SDK列表,您可以在GitHub仓库查看SDK更新历史、获取安装包以及查看指导文档进行配置。 表1 SDK列表 编程语言 github地址 指导文档 视频指导 JAVA huaweicloud-sdk-java-v3 Java SDK使用指导 Java SDK视频指导 PYTHON huaweicloud-sdk-python-v3 Python SDK使用指导 Python SDK视频指导 .NET huaweicloud-sdk-net-v3 .Net SDK使用指导 - GO huaweicloud-sdk-go-v3 Go SDK使用指导 - PHP huaweicloud-sdk-php-v3 PHP SDK使用指导 - C++ huaweicloud-sdk-cpp-v3 C++ SDK使用指导 -
  • API调用 示例代码修改调用环境信息后可直接调用。以下以新建工程为例,介绍如何在您的应用中调用SDK进行请求签名。 把API信息替换到HttpClientDemo.java中对应位置。 本示例以AK和SK保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。以Linux系统为例在本地将已获取的AK/SK设置为环境变量。 打开终端,输入以下命令打开环境变量配置文件。 vi ~/.bashrc 设置环境变量,保存文件并退出编辑器。 export HUAWEICLOUD_SDK_AK="已获取AK值" export HUAWEICLOUD_SDK_SK="已获取SK值" 输入以下命令使配置文件生效。 source ~/.bashrc 把API信息和已设置的环境变量替换到HttpClientDemo.java中对应位置。 HttpClientDemo中引用以下类,可在“获取SDK”包中的“src”文件下查看: Constant:demo中用到的常量。 SSLCipherSuiteUtil:tls认证配置参数的工具类,比如配置客户端不校验证书。 UnsupportProtocolException:异常处理类。 public class HttpClientDemo { private static final Logger LOG GER = LoggerFactory.getLogger(HttpClientDemo.class); public static void main(String[] args) throws Exception { // Create a new request. Request httpClientRequest = new Request(); try { // Set the request parameters. // AppKey, AppSecrect, Method and Url are required parameters. // Directly writing AK/SK in code is risky. For security, encrypt your AK/SK and store them in the configuration file or environment variables. // In this example, the AK/SK are stored in environment variables for identity authentication. // Before running this example, set environment variables HUAWEICLOUD_SDK_AK and HUAWEICLOUD_SDK_SK. httpClientRequest.setKey(System.getenv("HUAWEICLOUD_SDK_AK")); httpClientRequest.setSecret(System.getenv("HUAWEICLOUD_SDK_SK")); httpClientRequest.setMethod("POST"); // Set a request URL in the format of https://{Endpoint}/{URI}. httpClientRequest.setUrl("put your request url here"); httpClientRequest.addHeader("Content-Type", "text/plain"); // Set a body for http request. httpClientRequest.setBody("put your request body here"); } catch (Exception e) { LOGGER.error(e.getMessage()); return; } CloseableHttpClient client = null; try { // Sign the request. HttpRequestBase signedRequest = Client.sign(httpClientRequest, Constant.SIGNATURE_ALGORITHM_SDK_HMAC_SHA256); if (Constant.DO_VERIFY) { // creat httpClient and verify ssl certificate HostName.setUrlHostName(httpClientRequest.getHost()); client = (CloseableHttpClient) SSLCipherSuiteUtil.createHttpClientWithVerify(Constant.INTERNATIONAL_PROTOCOL); } else { // creat httpClient and do not verify ssl certificate client = (CloseableHttpClient) SSLCipherSuiteUtil.createHttpClient(Constant.INTERNATIONAL_PROTOCOL); } HttpResponse response = client.execute(signedRequest); // Print the body of the response. HttpEntity resEntity = response.getEntity(); if (resEntity != null) { LOGGER.info("Processing Body with name: {} and value: {}", System.getProperty("line.separator"), EntityUtils.toString(resEntity, "UTF-8")); } } catch (Exception e) { LOGGER.error(e.getMessage()); } finally { if (client != null) { client.close(); } } } } 运行HttpClientDemo.java,对请求进行签名、访问API并打印结果。 示例结果如下: [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Print the authorization: [Authorization: SDK-HMAC-SHA256 Access=3afe0280a6e1466e9cb6f23bcccdba29, SignedHeaders=host;x-sdk-date, Signature=26b2abfa40a4acf3c38b286cb6cbd9f07c2c22d1285bf0d4f6cf1f02d3bfdbf6] [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Print the status line of the response: HTTP/1.1 200 OK [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: Date and value: Fri, 26 Aug 2022 08:58:51 GMT [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: Content-Type and value: application/json [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: Transfer-Encoding and value: chunked [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: Connection and value: keep-alive [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: Server and value: api-gateway [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: X-Request-Id and value: 10955c5346b9512d23f3fd4c1bf2d181 [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Body with name: and value: {"200": "sdk success"} 显示{"200": "sdk success"},表示签名成功,API成功请求到后端。 如果改变AK或SK的值,API网关将返回的错误信息error_msg。
  • 操作步骤 登录控制台。 将鼠标移至页面右上角的用户名处,在下拉列表中单击“我的凭证”。 单击“访问密钥”。 单击“新增访问密钥”,进入“新增访问密钥”页面。 每个用户最多可创建2个访问密钥,不支持增加配额。如果您已拥有2个访问密钥,将无法创建访问密钥。 如需修改访问密钥,请删除访问密钥后重新创建。 为了保证历史兼容性,我们会使用访问密钥创建时间作为最近使用时间的初始值。在您使用该访问密钥时,系统将自动刷新最近使用时间。 输入描述信息,单击“确定”。 创建成功后,在“创建成功”弹窗中,单击“立即下载”下载密钥,并妥善保管。 您可以在访问密钥列表中查看访问密钥ID(AK),在下载的.csv文件中查看访问密钥(SK)。 获取临时AK/SK,请参考 IAM 接口文档。 请及时下载保存,弹窗关闭后将无法再次获取该密钥信息,但您可重新创建新的密钥。 当您下载访问密钥后,可以在浏览器页面左下角打开格式为.csv的访问密钥文件,或在浏览器“下载内容”中打开。 为了账号安全性,建议您妥善保管并定期修改访问密钥,修改访问密钥的方法为删除旧访问密钥,然后重新生成。
  • 调用API示例 把API信息替换到HttpClientDemo.java中对应位置。 本示例以AK和SK保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。以Linux系统为例在本地将已获取的AK/SK设置为环境变量。 打开终端,输入以下命令打开环境变量配置文件。 vi ~/.bashrc 设置环境变量,保存文件并退出编辑器。 export HUAWEICLOUD_SDK_AK="已获取AK值" export HUAWEICLOUD_SDK_SK="已获取SK值" 输入以下命令使配置文件生效。 source ~/.bashrc 把API信息和已设置的环境变量替换到HttpClientDemo.java中对应位置。 HttpClientDemo中引用以下类,可在“获取SDK”包中的“src”文件下查看: Constant:demo中用到的常量。 SSLCipherSuiteUtil:tls认证配置参数的工具类,比如配置客户端不校验证书。 UnsupportProtocolException:异常处理类。 public class HttpClientDemo { private static final Logger LOGGER = LoggerFactory.getLogger(HttpClientDemo.class); public static void main(String[] args) throws Exception { // Create a new request. Request httpClientRequest = new Request(); try { // Set the request parameters. // AppKey, AppSecrect, Method and Url are required parameters. // Directly writing AK/SK in code is risky. For security, encrypt your AK/SK and store them in the configuration file or environment variables. // In this example, the AK/SK are stored in environment variables for identity authentication. // Before running this example, set environment variables HUAWEICLOUD_SDK_AK and HUAWEICLOUD_SDK_SK. httpClientRequest.setKey(System.getenv("HUAWEICLOUD_SDK_AK")); httpClientRequest.setSecret(System.getenv("HUAWEICLOUD_SDK_SK")); httpClientRequest.setMethod("POST"); // Set a request URL in the format of https://{Endpoint}/{URI}. httpClientRequest.setUrl("put your request url here"); httpClientRequest.addHeader("Content-Type", "text/plain"); // Set a body for http request. httpClientRequest.setBody("put your request body here"); } catch (Exception e) { LOGGER.error(e.getMessage()); return; } CloseableHttpClient client = null; try { // Sign the request. HttpRequestBase signedRequest = Client.sign(httpClientRequest, Constant.SIGNATURE_ALGORITHM_SDK_HMAC_SHA256); if (Constant.DO_VERIFY) { // creat httpClient and verify ssl certificate HostName.setUrlHostName(httpClientRequest.getHost()); client = (CloseableHttpClient) SSLCipherSuiteUtil.createHttpClientWithVerify(Constant.INTERNATIONAL_PROTOCOL); } else { // creat httpClient and do not verify ssl certificate client = (CloseableHttpClient) SSLCipherSuiteUtil.createHttpClient(Constant.INTERNATIONAL_PROTOCOL); } HttpResponse response = client.execute(signedRequest); // Print the body of the response. HttpEntity resEntity = response.getEntity(); if (resEntity != null) { LOGGER.info("Processing Body with name: {} and value: {}", System.getProperty("line.separator"), EntityUtils.toString(resEntity, "UTF-8")); } } catch (Exception e) { LOGGER.error(e.getMessage()); } finally { if (client != null) { client.close(); } } } } 运行HttpClientDemo.java,对请求进行签名、访问API并打印结果。 示例结果如下: [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Print the authorization: [Authorization: SDK-HMAC-SHA256 Access=3afe0280a6e1466e9cb6f23bcccdba29, SignedHeaders=host;x-sdk-date, Signature=26b2abfa40a4acf3c38b286cb6cbd9f07c2c22d1285bf0d4f6cf1f02d3bfdbf6] [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Print the status line of the response: HTTP/1.1 200 OK [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: Date and value: Fri, 26 Aug 2022 08:58:51 GMT [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: Content-Type and value: application/json [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: Transfer-Encoding and value: chunked [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: Connection and value: keep-alive [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: Server and value: api-gateway [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: X-Request-Id and value: 10955c5346b9512d23f3fd4c1bf2d181 [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Body with name: and value: {"200": "sdk success"} 显示{"200": "sdk success"},表示签名成功,API成功请求到后端。 如果改变AK或SK的值,API网关将返回的错误信息error_msg。
  • 公告说明 自2024年9月起,当用户使用以下API的自定义策略授权时,用户需创建或更新自定义策略才可访问。 权限描述 对应的API 新增授权项 依赖授权项 IAM项目(Project) 企业项目(Enterprise Project) 获取SSL证书列表 GET /v2/{project_id}/apigw/certificates apig:certificate:list - √ √ 创建SSL证书 POST /v2/{project_id}/apigw/certificates apig:certificate:create apig:instances:get √ 请求参数中携带instance_id时支持,否则不支持 删除SSL证书 DELETE /v2/{project_id}/apigw/certificates/{certificate_id} apig:certificate:delete - √ × 查看证书详情 GET /v2/{project_id}/apigw/certificates/{certificate_id} apig:certificate:get - √ × 修改SSL证书 PUT /v2/{project_id}/apigw/certificates/{certificate_id} apig:certificate:update apig:instances:get √ 请求参数中携带instance_id时支持,否则不支持 获取SSL证书已绑定 域名 列表 GET /v2/{project_id}/apigw/certificates/{certificate_id}/attached-domains apig:certificate:listBoundDomain - √ × SSL证书绑定域名 POST /v2/{project_id}/apigw/certificates/{certificate_id}/domains/attach apig:certificate:batchBindDomain apig:certificate:get apig:groups:get √ × SSL证书解绑域名 POST /v2/{project_id}/apigw/certificates/{certificate_id}/domains/detach apig:certificate:batchUnbindDomain apig:certificate:get apig:groups:get √ × 查询实例终端节点连接列表 GET /v2/{project_id}/apigw/instances/{instance_id}/vpc-endpoint/connections apig:instance:listVpcEndpoint apig:instances:get √ √ 接受或拒绝终端节点连接 POST /v2/{project_id}/apigw/instances/{instance_id}/vpc-endpoint/connections/action apig:instance:acceptOrRejectVpcEndpointConnection apig:instances:get √ √ 查询实例的终端节点服务的白名单列表 GET /v2/{project_id}/apigw/instances/{instance_id}/vpc-endpoint/permissions apig:instance:listVpcEndpointPermission apig:instances:get √ √ 批量添加实例终端节点连接白名单 POST/v2/{project_id}/apigw/instances/{instance_id}/vpc-endpoint/permissions/batch-add apig:instance:batchAddVpcEndpointPermission apig:instances:get √ √ 批量删除实例终端节点连接白名单 POST/v2/{project_id}/apigw/instances/{instance_id}/vpc-endpoint/permissions/batch-delete apig:instance:batchDeleteVpcEndpointPermission apig:instances:get √ √ 创建参数编排规则 POST /v2/{project_id}/apigw/instances/{instance_id}/orchestration apig:orchestration:create apig:instances:get √ √ 查看编排规则列表 GET /v2/{project_id}/apigw/instances/{instance_id}/orchestration apig:orchestration:list apig:instances:get √ √ 查询编排规则详情 GET /v2/{project_id}/apigw/instances/{instance_id}/orchestrations/{orchestration_id} apig:orchestration:get apig:instances:get √ √ 更新编排规则 PUT /v2/{project_id}/apigw/instances/{instance_id}/orchestrations/{orchestration_id} apig:orchestration:update apig:instances:get √ √ 删除编排规则 DELETE /v2/{project_id}/apigw/instances/{instance_id}/orchestrations/{orchestration_id} apig:orchestration:delete apig:instances:get √ √ 查询编排规则绑定的API GET /v2/{project_id}/apigw/instances/{instance_id}/orchestrations/{orchestration_id}/attached-apis apig:orchestration:listBoundApis apig:instances:get √ √
  • 编辑构建任务 通过项目入口方式访问CodeArts Build服务首页。 在编译构建任务列表搜索目标任务。 单击编译构建任务所在行,在下拉列表中选择“编辑”,进入“编辑任务”页面。 基本信息:可修改任务名称、代码源、代码仓、默认分支、任务描述等信息。 构建步骤:可修改构建步骤、步骤参数等信息。 参数设置:可配置执行任务时的自定义参数。 执行计划:可配置触发事件(持续集成)和定时执行。 修改历史:可查看构建任务的修改记录。 权限管理:可配置不同角色的权限。 通知:可配置任务事件类型通知信息(包括任务构建成功、失败、删除、配置更新、被禁用)。 根据需要选择对应页签并进行编辑,单击“保存”完成修改。
  • 删除构建任务 单击编译构建任务所在行,在下拉列表中选择“删除”。请根据实际情况确定是否删除对应构建任务。 删除的构建任务可在构建任务回收站中查看。在编译构建首页右上角单击“更多”,在下拉列表选择“构建任务回收站”。 页面中展示已删除的构建任务,根据需要可以完成以下相关操作。 操作 说明 修改任务保留时间 单击“任务保留时间”下拉列表,根据需要选择时长,可选天数范围为1~30天。 搜索任务 在搜索框中输入待搜索内容,单击搜索,即可在页面中查看搜索结果。 删除任务 在列表中勾选待删除的任务,单击“删除”,即可将所选任务从回收站中删除。 恢复任务 在列表中勾选待恢复的任务,单击“恢复”,即可将所选任务恢复到编译构建服务的任务列表中。 清空回收站 单击“清空回收站”,可删除回收站中所有任务。
  • 通用外部链接卡片配置文件参数配置说明 表1 配置项 名称 类型 默认值 说明 iframeUrl string '' 用于配置待展示页面的完整URL地址。支持直接配置为完整的URL地址,也支持配置为数据映射来获取数据链中的某个变量。 如配置为${iframeUrl},则会获取apiConfig配置的数据源接口的返回值中“ifreamUrl”的值。 isShowForm Boolean false 是否展示表单下拉框,包括如下选项: 不配置 false true 不配置或者配置值为“false”时,数据源下拉框不展示。 label string '' 下拉框前显示的标签名称。 labelField string '${label}' 下拉框选项中显示的内容,必须使用数据映射方式进行自定义配置。 如配置为“${labelField1}”,界面中展示时会从接口返回值中取“labelField1”字段的值进行替换。不配置时会默认获取数据源中“label”字段的值。 apiConfig apiConfig -- 用于配置数据源接口,具体配置请参考表2。 表2 数据源接口配置 名称 类型 默认值 说明 url string '' 接口地址。 method string 'GET' 接口请求方式,包括如下选项: GET POST DELETE PUT headers Object {} 接口请求头配置,支持HTTP 标头配置项,同时支持机机认证逻辑。 如果配置为机机认证,需要配置机机认证信息,具体配置请参考表3。 body Object {} 接口参数。 dataBody string '' 接口响应返回值中表格数据链式路径。 表3 机机认证配置 名称 类型 默认值 说明 applyId string -- 接入机机认证机制的第三方接口对应的应用ID,用于获取token。 authorizationKey string -- 接入机机认证机制的第三方接口自定义的请求头字段,用于携带token。
  • 配置模板卡片的配置文件 打开文本编辑工具,新建一个文件。 您也可以在开发工具新建一个文件作为配置文件。 在文件中填写配置文件信息,配置文件的参数配置说明请参见通用外部链接卡片配置文件参数配置说明。 配置文件格式如下: { "label": "标签名称", "labelField": "${labelField1}", "isShowForm": true, "queryDataType": "api", "apiConfig": { "url": "http://www.example.com", "method": "GET", "headers": { "authorizationKey": "X-Pdm-Isc-Common-Token", "applyId": "1" }, "body": { "params1": "value1" }, "dataBody": "resp.data.data" }, "iframeUrl": "${iframeUrl}" } 将配置文件保存在本地,文件需要保存为json格式。
  • 卡片库简介 卡片是一种新的服务形态,提供一种比页面更细粒度的可复用的原子化服务能力,能直观呈现独立的业务含义,使用户能够精准快速地获取想要的服务。 目前卡片定义是狭义定义,不含报表、中大屏、页面、移动屏等由卡片编排的消费产物。 作为一种入口方式。如在一站式应用,以图标/链接/图表/列表等形式作为子应用的入口,提供比菜单更丰富和聚合的呈现和交互效果。 作为一种可视方式。如在销售项目空间,以图表/列表/表格等形式提供各项指标数据,用户可以根据需要删减指标卡片,调整指标卡片位置;系统也可以根据User Profile动态推送内容。
  • 使用方式 云平台提供了Web化的服务管理系统(即管理控制台)和基于HTTPS请求的API(Application programming interface)管理方式。 API方式 如果用户需要将云手机集成到第三方系统,用于二次开发,请使用API方式访问云手机服务器。具体操作请参见“API参考”。 管理控制台方式 其他相关操作,如购买、连接云手机实例,请使用管理控制台方式访问云手机服务器。 云手机实例以服务器为单位购买,您只需要指定具体的服务器类型、实例规格、手机镜像、所需要的网络配置等,即可获得一台服务器,以及相应数量的云手机实例。详细购买及使用流程请参见“购买云手机服务器”。
  • 为什么选择云手机服务器? 作为一种新型服务,云手机服务器对传统物理手机起到了非常好的延展和补充作用,可以用在诸如APP仿真测试、云手游、直播互娱、移动办公等场景,让移动应用不但可以在物理手机运行,还可以在云端智能运行。 降本增效 面向如APP仿真测试等互联网行业场景,单台手机的处理效率非常有限,通过云手机的方式,大幅降低人工操作和设备采购维护成本。 安全保障 云手机由于应用数据运行在云上,面向政府、金融等信息安全诉求较高的行业,提供更加安全高效的移动办公解决方案。员工通过使用云手机的方式登录办公系统,公私数据分离,同时企业也可对云手机服务器进行智能管理,降本增效的同时,信息安全也更加有保障。 探索游戏、直播行业新可能 云手机服务器还可以为游戏、直播等行业提供全新的互动体验方式,开拓新的商业模式和市场空间。以云手游场景为例,因为游戏的内容实际是在云上虚拟手机上运行,可以提前安装部署和动态加载,所以对于最终玩家来说,游戏可以做到无需下载,即点即玩,大幅提高玩家转换率。同时可以让中低配手机用户也能流畅运行大型手游,增大游戏覆盖的用户范围。 云手机服务器的更多创新技术以及优势,请参见产品优势。
  • 产品架构 云手机服务器产品架构分三部分,云手机侧、终端设备侧以及客户业务侧,如图1所示。 图1 云手机服务器产品架构 云手机服务器基于华为TaiShan ARM服务器实现,集成多张高性价比的专业GPU显卡,可提供专业的图形图像处理能力。TaiShan服务器中运行了EulerOS作为Host OS,在Host OS中通过自研MonBox技术生成容器,在容器中运行开源AOSP系统,从而虚拟出多台云手机。由于TaiShan服务器基于ARM架构,而手机系统也基于ARM架构,所以减少了指令集转换所带来的翻译算力损耗,可以达到更好的使用体验。 云手机服务器提供了视频、音频以及触控SDK。客户基于终端设备可以开发相应的APP,来获取云手机的音频、视频;也可以采集触控指令,如触摸屏、滑动、单击等操作指令,从而在云手机上来执行。 在业务侧,客户通过管理控制台、API、ADB端口及其他自定义端口可以对云手机服务器进行资源管理、应用管理、运维管理和接入管理等。 资源管理:购买、查询云手机服务器。 应用管理:云手机应用程序推送、安装、卸载等。 运维管理:重启、重置、关机、开机云手机服务器。 接入管理:云手机服务器接入认证。
  • CPH权限 默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 CPH部署时通过物理区域划分,为项目级服务。授权时,“授权范围”需要选择“指定区域项目资源”,然后在指定区域(如华东-上海一)对应的项目(cn-east-3)中设置相关权限,并且该权限仅对此项目生效;如果“授权范围”选择“所有资源”,则该权限在所有区域项目中都生效。访问CPH时,需要先切换至授权区域。 权限根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对ECS服务,管理员能够控制IAM用户仅能对某一类云服务器资源进行指定的管理操作。多数细粒度策略以API接口为粒度进行权限拆分,权限的最小粒度为API授权项(action),CPH支持的API授权项请参见策略及授权项说明。 如表1所示,包括了CPH的所有系统权限。 表1 CPH系统权限 系统角色/策略名称 描述 类别 依赖关系 CPH Administrator 云手机服务器管理员权限,拥有该权限的用户拥有云手机服务器所有执行权限。 系统角色 对于购买自定义网络的服务器,需要依赖VPC FullAccess权限,在同项目中勾选依赖的角色。 CPH User 云手机服务器只读权限,拥有该权限的用户仅能查看云手机服务器资源数据。 系统角色 依赖Tenant Guest,在同项目中勾选依赖的角色。 CPH FullAccess 云手机服务器已支持细粒度授权项的所有执行操作。 系统策略 不支持的授权项需结合系统角色进行授权。 CPH ReadOnlyAccess 云手机服务器已支持细粒度授权项的只读操作,即查看云手机服务器资源数据。 系统策略 不支持的授权项需结合系统角色进行授权。 CPH NotSupportEnterpriseAccess 云手机服务器不支持企业项目的细粒度权限项集合。 使用企业项目功能时:在企业项目视图授权了CPH FullAccess策略后,还需要在IAM项目视图授权该策略,用户才可以正常使用CPH的全部功能。 系统策略 不支持的授权项需结合系统角色进行授权。 CPH AgencyDependencyAccess 云手机服务器依赖用户委托给服务的细粒度权限项集合。 包含云手机服务在创建云手机服务器时依赖的其他服务的权限。 系统策略 不支持的授权项需结合系统角色进行授权。 表2列出了常用操作与系统角色的授权关系,您可以参照该表选择合适的系统角色。 表2 常用操作与系统角色的关系 操作 CPH Administrator CPH User CPH FullAccess CPH ReadOnlyAccess CPH NotSupportEnterpriseAccess 购买云手机服务器 √ × √ × × 删除云手机服务器 √ × √ × × 切换云手机服务器 √ × √ × × 查询云手机服务器列表 √ √ √ √ × 查询云手机服务器详情 √ √ √ √ × 查询云手机服务器规格列表 √ √ √ √ √ 修改云手机服务器名称 √ × √ × × 变更云手机服务器规格 √ × √ × × 重启云手机服务器 √ × √ × × 推送共享存储文件 √ × √ × × 查询共享存储文件 √ √ √ √ × 删除共享存储文件 √ × √ × × 推送共享应用 √ × √ × × 删除共享应用 √ × √ × × 更改密钥对 √ × √ × × 查询编码服务 √ √ √ √ × 重启编码服务 √ × √ × × 查询带宽信息 √ √ √ √ √ 修改共享带宽 √ × √ × √ 查询云手机列表 √ √ √ √ × 查询云手机详情 √ √ √ √ × 查询云手机规格列表 √ × √ × √ 重置云手机实例 √ × √ × × 重启云手机实例 √ × √ × × 关闭云手机实例 √ × √ × × 修改云手机名称 √ × √ × × 更新云手机属性 √ × √ × × 导出云手机数据 √ × √ × × 恢复云手机数据 √ × √ × × 云手机流量导流 √ × √ × × 云手机磁盘扩容 √ × √ × × 获取云手机连接信息 √ √ √ √ × 执行异步adb shell命令 √ × √ × × 执行同步adb shell命令 √ × √ × × 查询任务执行状态 √ √ √ √ √ 查询任务执行状态列表 √ √ √ √ √ 批量添加标签 √ × √ × × 批量删除标签 √ × √ × × 查询资源实例 √ √ √ √ × 查询资源标签 √ √ √ √ × 查询项目标签 √ √ √ √ × 获取手机镜像列表 √ √ √ √ √ 删除手机镜像 √ × √ × × 手机镜像共享 √ × √ × × 获取手机镜像共享用户列表 √ √ √ √ × 手机镜像取消共享 √ × √ × × 获取可用区列表 √ √ √ √ √ 获取子网列表 √ √ √ √ √ 查询对等连接配置 √ √ √ √ √ 删除对等连接配置 √ × √ × × 添加对等连接配置 √ × √ × × 导出云手机详情 √ × √ × × 创建委托 √ × √ × √ 检查委托 √ × √ × √
  • 云手机服务器与其他服务的关系 表1 云手机服务器与其他服务的关系 服务名称 云手机与其他服务的关系 主要交互功能 弹性云服务器 弹性云服务器可作为内网方式连接云手机的跳板机器,也可在云手游场景下作为推流服务器使用。 ADB方式(内网) 弹性公网IP 通过弹性公网IP实现云手机与外部通信。 ADB方式(公网) 虚拟私有云 通过虚拟私有云建立专属的网络环境。 购买云手机服务器 云硬盘 为云手机提供云上存储空间。 云手机服务器 云手游服务器 对象存储服务 为云手机安装APK时,可先将软件包上传至OBS桶,通过相关ADB命令实现批量安装。 批量控制 云监控服务 当您购买云手机后,无需额外安装其他插件,即可在 云监控 服务查看云手机及相关联资源(云手机服务器、磁盘及GPU卡)的监控数据,还可以获取可视化监控图表。 支持的监控指标 查看监控指标 创建告警规则 云审计 服务 记录与云手机相关的操作事件,便于日后的查询、审计和回溯。 支持审计的关键操作列表 查看审计日志
  • 功能介绍 OBS支持用户配置指定的规则,实现定时删除桶中的对象或者定时转换对象的存储类别,从而节省存储费用更多生命周期相关信息请参见生命周期管理。 调用设置桶的生命周期配置接口,您可以为指定桶设置生命周期策略。 对象生命周期到期以后,对象将会永久删除,无法恢复。 归档存储和深度归档存储不支持多AZ,因此不支持使用生命周期的存储类别转换功能,将多AZ的桶或对象转化为归档或深度归档存储。 低频访问存储的最低存储时间为30天,归档存储的最低存储时间为90天,深度归档存储的最低存储时间为180天。若对象经过转换,归档存储时间少于最低存储时间,需要补足剩余天数的存储费用。
  • 接口约束 单个桶的生命周期规则条数没有限制,但一个桶中所有生命周期规则的XML描述总大小不能超过20KB。 您最多可以在一个并行文件系统下配置20条生命周期管理规则,超过20条将提示不支持。 您必须是桶拥有者或拥有设置桶的生命周期配置的权限,才能设置桶的生命周配置。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:PutLifecycleConfiguration权限,如果使用桶策略则需授予PutLifecycleConfiguration权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。
  • 返回结果 表10 返回结果 参数类型 描述 Response 说明: 该接口返回是一个Promise类型,需要使用Promise、async/await语法处理。 参数解释: 接口返回信息,详见Response。 表11 Response 参数名称 参数类型 描述 CommonMsg ICommonMsg 参数解释: 接口调用完成后的公共信息,包含HTTP状态码,操作失败的错误码等,详见ICommonMsg。 InterfaceResult BaseResponseOutput 参数解释: 操作成功后的结果数据,详见BaseResponseOutput。 约束限制: 当Status大于300时为空。 表12 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服务端返回的详细错误码。 表13 BaseResponseOutput 参数名称 参数类型 描述 RequestId string 参数解释: OBS服务端返回的请求ID。
  • 返回结果 表6 返回结果 参数类型 描述 Response 说明: 该接口返回是一个Promise类型,需要使用Promise、async/await语法处理。 参数解释: 接口返回信息,详见Response。 表7 Response 参数名称 参数类型 描述 CommonMsg ICommonMsg 参数解释: 接口调用完成后的公共信息,包含HTTP状态码,操作失败的错误码等,详见ICommonMsg。 InterfaceResult CopyObjectOutput 参数解释: 操作成功后的结果数据,详见CopyObjectOutput。 约束限制: 当Status大于300时为空。 表8 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服务端返回的详细错误码。 表9 CopyObjectOutput 参数名称 参数类型 描述 RequestId string 参数解释: OBS服务端返回的请求ID。 默认取值: 无 LastModified string 参数解释: 目标对象的最近一次修改时间(UTC时间)。 约束限制: 日期格式必须为ISO8601的格式。 例如:2018-01-01T00:00:00.000Z,表示最后一次修改时间为2018-01-01T00:00:00.000Z。 默认取值: 无 ETag string 参数解释: 目标对象的ETag值。对象的base64编码的128位MD5摘要。ETag是对象内容的唯一标识,可以通过该值识别对象内容是否有变化。比如上传对象时ETag为A,下载对象时ETag为B,则说明对象内容发生了变化。ETag只反映变化的内容,而不是其元数据。上传的对象或复制操作创建的对象,都有唯一的ETag。 约束限制: 当对象是服务端加密的对象时,ETag值不是对象的MD5值。 取值范围: 长度为32的字符串。 默认取值: 无 CopySourceVersionId string 参数解释: 源对象的版本号。 取值范围: 长度为32的字符串。 默认取值: 无 VersionId string 参数解释: 目标对象的版本号。 取值范围: 长度为32的字符串。 默认取值: 无
  • 接口约束 您必须是桶拥有者或拥有复制对象的权限,才能复制对象。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:object:PutObject权限,如果使用桶策略则需授予PutObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。 复制对象操作的请求需要通过头域携带复制的原桶和对象信息,不能携带消息实体。 目标对象大小范围是[0, 5GB],如果源对象大小超过5GB,只能使用多段相关接口(Harmony SDK)功能复制部分对象。
  • 接口约束 您必须是桶拥有者或拥有获取桶标签的权限,才能获取桶标签。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:GetBucketTagging权限,如果使用桶策略则需授予GetBucketTagging权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。
共100000条