华为云用户手册

  • 请求参数 表3 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 发送的实体的MIME类型。推荐用户默认使用application/json,如果API是对象、镜像上传等接口,媒体类型可按照流类型的不同进行确定。 缺省值:application/json X-Auth-Token 是 String 从 IAM 服务获取的用户Token。 用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。 X-Language 否 String 请求语言类型。 缺省值:en-us 枚举值: en-us zh-cn
  • 响应示例 状态码: 200 OK { "job_id" : "c7debc9c-8e09-4a5d-8dd6-cc44f78jb20r", "position" : "mysql-bin.000277:805" } 状态码: 400 Bad Request { "error_code" : "DRS.10030014", "error_msg" : "Firstly, please the query object info." }
  • URI GET /v5/{project_id}/jobs/{job_id}/db-position 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 租户在某一Region下的Project ID。 获取方法请参见获取项目ID。 job_id 是 String 任务ID。 表2 Query参数 参数 是否必选 参数类型 描述 query_id 是 String 位点信息采集的ID,由采集数据库位点信息接口返回的ID。
  • 常见编译问题 本章节收录了编译sdk或者sdk demo可能遇到的一些编译问题,对应版本的问题可能在其他旧版本中也出现,都可以参考一下 v3.23.3版本反映的常见问题: 问题1: 编译sdk的vs工程报错: 报错文件:目录${yourSDKPath}\platform\eSDK_LogAPI_V2.1.10\C\include下面的eSDKLogAPI.h、eSDKLogDataType.h这两个文件 vs编译器错误码:c2018 解决方案: 修改上述目录下的两个文件(eSDKLogAPI.h、eSDKLogDataType.h)的行尾序列为CRLF 问题2:sdk的vs工程编译成功后还需要手动拷贝lib、dll到demo工程目录下才能运行demo程序,不够方便 解决方案(以Debug,x64为例): 1、编译Debug,x64的obs.sln解决方案 2、打开obs_demo.sln解决方案,调整属性为Debug,x64,按图操作后,填入值: PATH=%PATH%;$(ProjectDir)..\..\eSDK_OBS_API_C++\build\vc100\Debug;$(ProjectDir)..\..\eSDK_OBS_API_C++\bin\win64_x64_msvc\release;$(ProjectDir)..\..\..\..\platform\eSDK_LogAPI_V2.1.10\C\release_x64;$(LocalDebuggerEnvironment) v3.22.7版本反映的Sdk本体常见编译问题 问题1: 解决方案:通过下面的脚本去编译securec组件,并将产物拷贝到对应目录 export Your_SDK_path='Your_SDK_path' cd ${Your_SDK_path}/platform/huaweisecurec/src/ make mkdir ${Your_SDK_path}/platform/huaweisecurec/lib/linux cp ${Your_SDK_path}/platform/huaweisecurec/lib/libsecurec.so ${Your_SDK_path}/platform/huaweisecurec/lib/linux cd ${Your_SDK_path}/source/eSDK_OBS_API/eSDK_OBS_API_C++ #需要先cd到目录下,因为脚本按相对路径查找依赖项 sh build.sh 问题2: 解决方案: 在source\eSDK_OBS_API\eSDK_OBS_API_C++\src\object\download_file.c 中删除26、27行(如下) pthread_mutex_t g_mutexThreadCheckpoint; pthread_mutex_t g_mutexThreadCheckpoint_download; 在source\eSDK_OBS_API\eSDK_OBS_API_C++\src\object\object_common.c 中删除31、32行(如下) pthread_mutex_t g_mutexThreadCheckpoint; pthread_mutex_t g_mutexThreadCheckpoint_download; 之后编译即可 问题3: 这个问题一般是在其他路径中执行build.sh导致的,需要先cd到对应目录下再执行,因为脚本按相对路径查找依赖项,执行如下脚本编译 export Your_SDK_path='Your_SDK_path' cd ${Your_SDK_path}/source/eSDK_OBS_API/eSDK_OBS_API_C++ sh build.sh v3.22.7版本反映的常见Sdk Demo编译问题 问题1: 需要拷贝一下cjson头文件以及相关库(如果是arm需要把路径中的linux替换为arm) 同时需要改一下Makefile export Your_SDK_path='Your_SDK_path' export Your_DEMO_path='Your_DEMO_path' cp ${Your_SDK_path}/build/script/Provider/build/linux/cjson-1.7.15/include/cJSON.h ${Your_DEMO_path}/include cp ${Your_SDK_path}/build/script/Provider/build/linux/cjson-1.7.15/lib/libcjson.so* ${Your_DEMO_path}/lib 打开${Your_DEMO_path}/demo/Makefile 将16行(LIB=-leSDKOBS -lsecurec)替换为LIB=-lcjson -leSDKOBS -lsecurec cd ${Your_DEMO_path}/demo make 父主题: 常见问题
  • OBS服务环境搭建 开发过程中,您有任何问题可以在github上提交issue,或者在华为云 对象存储服务 论坛中发帖求助。 注册云服务帐号 使用OBS之前必须要有一个云服务帐号。 打开浏览器。 登录公有云网站www.huaweicloud.com。 在页面右上角单击“注册”。 按需填写注册信息并单击“同意协议并注册”。 开通OBS服务 使用OBS服务之前必须先充值,才能正常使用OBS服务。 登录OBS管理控制台。 单击页面右上角的“费用”进入费用中心页面。 单击“充值”,系统自动跳转到充值窗口。 根据界面提示信息,对帐户进行充值。 充值成功后,关闭充值窗口,返回管理控制台首页。 单击“对象存储服务”,开通并进入OBS管理控制台。 创建访问密钥 OBS通过用户帐号中的AK和SK进行签名验证,确保通过授权的帐号才能访问指定的OBS资源。以下是对AK和SK的解释说明: AK:Access Key ID,接入键标识,用户在对象存储服务系统中的接入键标识,一个接入键标识唯一对应一个用户,一个用户可以同时拥有多个接入键标识。对象存储服务系统通过接入键标识识别访问系统的用户。 SK:Secret Access Key,安全接入键,用户在对象存储服务系统中的安全接入键,是用户访问对象存储服务系统的密钥,用户根据安全接入键和请求头域生成鉴权信息。安全接入键和接入键标识一一对应。 访问密钥分永久访问密钥(AK/SK)和临时访问密钥(AK/SK和SecurityToken)两种。每个用户最多可创建两个有效的永久访问密钥。临时访问密钥只在设置的有效期内能够访问OBS,过期后需要重新获取。出于安全性考虑,建议您使用临时访问密钥访问OBS,或使用永久访问密钥访问OBS时,定期更新您的访问密钥(AK/SK)。两种密钥的获取方式如下。 永久访问密钥: 登录OBS控制台。 单击页面右上角的用户名,并选择“我的凭证”。 在“我的凭证”页面,单击左侧导航栏的“访问密钥”。 在“访问密钥”页面,单击“新增访问密钥”。 在弹出的“新增访问密钥”对话框中,输入登录密码和对应验证码。 用户如果未绑定邮箱和手机,则只需输入登录密码。 用户如果同时绑定了邮箱和手机,可以选择其中一种方式进行验证。 单击“确定”。 在弹出的“下载确认”提示框中,单击“确定”后,密钥会直接保存到浏览器默认的下载文件夹中。 打开下载下来的“credentials.csv”文件既可获取到访问密钥(AK和SK)。 每个用户最多可创建两个有效的访问密钥。 为防止访问密钥泄露,建议您将其保存到安全的位置。如果用户在此提示框中单击“取消”,则不会下载密钥,后续也将无法重新下载。如果需要使用访问密钥,可以重新创建新的访问密钥。 临时访问密钥: 临时AK/SK和SecurityToken是系统颁发给用户的临时访问令牌,通过接口设置有效期,范围为15分钟至24小时,过期后需要重新获取。临时AK/SK和SecurityToken遵循权限最小化原则。使用临时AK/SK鉴权时,临时AK/SK和SecurityToken必须同时使用。 获取临时访问密钥的接口请参考获取临时AK/SK和securitytoken。 OBS属于全局级服务,所以在获取临时访问密钥时,需要设置Token的使用范围取值为domain,表示获取的Token可以作用于全局服务,全局服务不区分项目或者区域。 父主题: 快速入门
  • 兼容性 3.*.* 相对于 3.0.0兼容 3.*.* 不兼容 2.*.* 3.*.* 不兼容 1.*.* arm编译环境: NAME="EulerOS" VERSION="2.0 (SP8)" ID="euleros" ID_LIKE="rhel fedora centos" VERSION_ID="2.0" PRETTY_NAME="EulerOS 2.0 (SP8)" ANSI_COLOR="0;31" 内核版本: 4.19.36-vhulk1905.1.0.h276.eulerosv2r8.aarch64 gcc/g++版本: gcc (GCC) 10.3.0/g++ (GCC) 10.3.0 linux编译环境: NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:7" HOME_URL="https://www.centos.org/" BUG_REPORT_URL="https://bugs.centos.org/" CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="7" 内核版本: 3.10.0-957.5.1.el7.x86_64 gcc/g++版本: gcc (GCC) 10.3.0/g++ (GCC) 10.3.0 SDK二进制包编译环境如上,其余内核和操作系统的兼容性不做保证。如果有其它操作系统或者内核版本的需求,请使用开源代码自行编译。
  • SDK编译 获取到SDK源码后,根据使用平台来开展编译工作。 linux下: linux可以直接进入到source/eSDK_OBS_API/eSDK_OBS_API_C++/下执行下面的脚本来编译: export SPD LOG _VERSION=spdlog-1.9.2 bash build.sh sdk 具体参数可见脚本内注释,生成产物为一个包含了demo代码,include,和lib的demo包。 Windows下: 使用visual studio打开source/eSDK_OBS_API/eSDK_OBS_API_C++/sln/vc100/下的sln工程,生成obs项目,即可在输出目录(可在工程属性中查看)生成huaweisecurec.lib,huaweisecurec.dll,libeSDKOBS.lib和libeSDKOBS.dll。 详细步骤请参见Windows下编译C SDK MAC下: 参照compile_for_macos.txt 常见编译问题见:常见编译问题
  • 请求示例 POST https://{Endpoint}/v2/0536cdee2200d5912f7cc00b877980f1/snapshots/c719b1a7-c85c-4cb5-a721-7694908c2c11/table-restore-check { "case_sensitive" : true, "database" : "postgres", "restore_table_list" : [ { "schema_name" : "postgres", "table_name" : "public" } ], "target_table_list" : [ { "schema_name" : "postgres", "table_name" : "public" } ] }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 check_table_name_result CheckTableNameResult object 检查结果。 表5 CheckTableNameResult 参数 参数类型 描述 database String 数据库名称。 restore_table_list Array of strings 恢复源表信息。 target_table_list Array of strings 恢复目的表信息。
  • 请求参数 表2 请求Body参数 参数 是否必选 参数类型 描述 case_sensitive 是 Boolean 名称是否区分大小写。 database 是 String 数据库名称。 restore_table_list 是 Array of TableDetail objects 源表信息。 target_table_list 是 Array of TableDetail objects 目的表信息。 表3 TableDetail 参数 是否必选 参数类型 描述 schema_name 是 String schema名称。 table_name 是 String 表名称。
  • 修订记录 发布日期 修订记录 2023-11-02 第十次正式发布。 更新提交工单以及我的授权内容描述。 2022-03-08 第九次正式发布。 新增审计章节。 2022-02-09 第八次正式发布。 更新提交工单章节。 2021-03-23 第七次正式发布。 优化同组工单章节。 2020-05-13 第六次正式发布。 同组工单章节新增关联订单内容。 我的授权和同组授权章节新增授权类型说明。 2020-04-24 第五次正式发布。 我的工单章节新增标签内容。 2020-01-20 第四次正式发布。 配置工单提交权限章节内容优化。 2019-12-30 第三次正式发布。 配置工单提交权限章节内容优化。 新增管理工单章节。 新增同组授权章节。 2019-09-23 第二次正式发布。 文档内容结构优化。 2018-08-30 第一次正式发布。
  • 操作步骤 登录管理控制台。 单击右上角“工单”,进入“工单管理”页面。 单击左侧导航栏的“我的授权”,可查看所有授权状态信息。 单击待授权问题操作列的“授权”,查看华为工程师需要的授权信息。 图1 授权 填写需要的授权信息,勾选“我已阅读并同意《工单服务协议》”,单击“确认授权”,即可授权给华为工程师处理。 图2 确认授权 当前授权类型包括以下几种: 服务器类授权:SSH协议(包括密码和私钥两种)、RDP协议、VNC协议 帐号授权:支持帐号授权和委托授权 FTP授权:支持SFTP 机密信息授权 授权信息在工单处理结束后在系统中清除,华为云不会保存用户的机密信息,建议用户在工单处理结束后修改密码。
  • 操作步骤 登录管理控制台。 单击右上角“工单”,进入“工单管理”页面。 单击左侧导航栏的“同组授权”,可查看同组用户已授权给华为工程师的授权信息。 单击待授权问题操作列的“授权”,查看华为工程师需要的授权信息。 图1 授权 填写需要的授权信息,勾选“我已阅读并同意《工单服务协议》”,单击“确认授权”,即可授权给华为工程师处理。 图2 确认授权 当前授权类型包括以下几种: 服务器类授权:SSH协议、RDP协议、VNC协议 帐号授权:支持帐号授权和委托授权 FTP授权:支持SFTP通过以下方式提醒我工单进展 机密信息授权 授权信息在工单处理结束后在系统中清除,华为云不会保存用户的机密信息,建议用户在工单处理结束后修改密码。
  • 安装Serverless Framework 通过npm安装Serverless Framework,它在安装Node.js时已经安装。 打开终端,输入npm install -g serverless安装Serverless。 npm install -g serverless 安装完成后,可以通过在终端中运行以下命令来验证Serverless是否安装成功。 serverless 查看安装的Serverless版本,请运行: serverless --version
  • 简介 Serverless Framework帮助您使用华为云 函数工作流 开发和部署无服务器应用。它是一个CLI,提供开箱即用的结构、自动化功能和最佳实践,您可以专注于构建复杂的、事件驱动的、无服务器架构,由函数和事件组成。 Serverless Framework与其他应用程序框架不同,因为它: 管理您的代码和基础设施。 支持多种语言(Node.js、Python、Java等)。 核心概念 父主题: 使用指南
  • 内存大小和超时 函数的memorySize和timeout可以在提供商或函数层面指定。提供商层面的定义允许所有函数共享此配置,而函数层面的定义意味着此配置仅对当前函数有效。 如果未指定,默认memorySize为256MB,timeout为30s。 # serverless.yml provider: memorySize: 512 timeout: 90 functions: first: handler: first second: handler: second memorySize: 256 timeout: 60
  • 配置 您的Serverless服务中有关华为云函数工作流的所有内容都可以在functions属性下的serverless.yml中找到。 # serverless.yml service: fg-service provider: name: huawei plugins: - serverless-huawei-functions functions: first: handler: index.handler
  • 执行入口签名 事件执行入口的签名如下: function (event, context) { } event 如果函数由指定的APIG事件触发,则传递给执行入口的event如下: // JSON.parse(event) { events: { "body": "", "requestContext": { "apiId": "xxx", "requestId": "xxx", "stage": "RELEASE" }, "queryStringParameters": { "responseType": "html" }, "httpMethod": "GET", "pathParameters": {}, "headers": { "accept-language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2", "accept-encoding": "gzip, deflate, br", "x-forwarded-port": "443", "x-forwarded-for": "xxx", "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "upgrade-insecure-requests": "1", "host": "xxx", "x-forwarded-proto": "https", "pragma": "no-cache", "cache-control": "no-cache", "x-real-ip": "xxx", "user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0" }, "path": "/apig-event-template", "isBase64Encoded": true } } context context参数包含有关函数的运行时信息。例如:请求ID、临时AK、函数元数据。具体详情请参见开发事件函数。
  • HTTP终端节点 此设置指定当有人通过GET请求访问函数API终端节点时,应运行first函数。您可以在部署服务后运行serverless info命令来获取终端节点的URL。 以下是一个例子: # serverless.yml functions: hello: handler: index.hello events: - apigw: env_id: DEFAULT_ENVIRONMENT_RELEASE_ID env_name: RELEASE req_method: GET path: /test name: API_test 请参考有关函数执行入口的文档,了解用于此类事件的入口函数签名。
  • 示例 简单的函数调用 serverless invoke --function functionName 本示例将调用部署的函数,并在终端中输出调用的结果。 带数据的函数调用 serverless invoke --function functionName --data '{"name": "Bob"}' 此示例将使用提供的数据调用函数,并在终端中输出调用的结果。 带传递数据的函数调用 serverless invoke --function functionName --path lib/event.json 此示例将在调用指定/部署的函数时传递lib/event.json文件(相对于服务的根目录的相对路径)中的JSON数据。 event.json示例: { "key": "value" }
  • 示例 从GitHub URL安装服务 serverless install --url https://github.com/zy-linn/examples/tree/v3/legacy/huawei-nodejs 本示例将从GitHub下载huawei-nodejs服务的.zip文件,在当前工作目录下创建一个名为huawei-nodejs的新目录,并将文件解压到该目录下。 使用新服务名称从GitHub URL安装服务 serverless install --url https://github.com/zy-linn/examples/tree/v3/legacy/huawei-nodejs--name my-huawei-service 此示例执行过程如下: 从GitHub下载huawei-nodejs服务的.zip文件。 在当前工作目录中创建名为my-huawei-service的新目录。 在此目录中解压文件。 如果根服务中存在serverless.yml,则将服务重命名为my-huawei-service。 从GitHub URL中的目录安装服务 serverless install --url https://github.com/zy-linn/examples/tree/v3/legacy/huawei-nodejs 本示例将从GitHub下载huawei-nodejs服务。
  • 从环境变量中引用变量 要引用环境变量中的变量,请在serverless.yml中使用${env:someProperty}语法,如下: service: new-service provider: name: huawei runtime: Node.js14.18 credentials: ~/.fg/credentials # path must be absolute environment: variables: ENV_FIRST: ${env:TENCENTCLOUD_APPID} plugins: - serverless-huawei-functions functions: hello: handler: index.hello
  • 配置 事件属于每个函数,可以在serverless.yml的events属性中找到。 # serverless.yml functions: first: # Function name handler: index.http # Reference to file index.js & exported function 'http' events: - apigw: env_id: DEFAULT_ENVIRONMENT_RELEASE_ID env_name: RELEASE req_method: GET path: /test name: API_test 目前,每个函数只支持一个事件定义。
  • 示例 创建新服务 serverless create --template-url https://github.com/zy-linn/examples/tree/v3/legacy/huawei-nodejs --name my-special-service 此示例将为服务生成Node.js运行时。华为作为提供商,该运行时将在当前工作目录中生成。 在(新)目录中创建指定名称的服务 serverless create --template-url https://github.com/zy-linn/examples/tree/v3/legacy/huawei-nodejs --path my-new-service 此示例将为服务生成Node.js运行时。华为作为提供商,该运行时将在my-new-service目录中生成;如不存在该目录,则会自动生成。在其他情况下Serverless将使用已经存在的目录。 此外,Serverless将根据您提供的路径将服务重命名。在此示例中,服务将重命名为my-new-service。
  • 创建并部署serverless服务 当前您已经完成了设置,可以开始创建和部署serverless服务。 创建新服务。 使用huawei-nodejs模板创建新服务。 serverless create --template-url https://github.com/zy-linn/examples/tree/v3/legacy/huawei-nodejs --path my-service 安装依赖项。 cd my-service npm install 设置凭证,详情请参考凭证设置。 更新serverless.yml。 更新项目serverless.yml中的region和credentials。 部署。 使用如下命令的场景为首次部署服务,以及在更改serverless.yml中的函数、事件或资源之后,希望同时部署服务中的所有更改。该命令详情请参考Deploy命令。 serverless deploy
  • 创建 使用create命令创建服务。您可以输入路径创建目录并将服务自动命名: # Create service with Node.js template in the folder ./my-service serverless create --template-url https://github.com/zy-linn/examples/tree/v3/legacy/huawei-nodejs --path my-service huawei-nodejs是华为云函数工作流的可用运行时。 有关所有详细信息和选项,请查看创建。
  • 组织 在最初使用应用时,建议您可以使用单个服务来定义该项目的所有函数和事件。 myService/ serverless.yml # Contains all functions and infrastructure resources 但是,随着应用增多,您可以将其拆分为多个服务。大多数用户按工作流或数据模型组织他们的服务,并在服务中将与这些工作流和数据模型相关的函数进行分组。 users/ serverless.yml # Contains 4 functions that do Users CRUD operations and the Users database posts/ serverless.yml # Contains 4 functions that do Posts CRUD operations and the Posts database comments/ serverless.yml # Contains 4 functions that do Comments CRUD operations and the Comments database 这是有意义的,因为相关函数通常使用公共基础设施资源,并且用户希望将这些函数和资源作为单个部署单元放在一起,以便更好地组织和分离关注点。
  • 在现有服务中安装Serverless 如果您已经有Serverless服务,并且更愿意使用package.json锁定框架版本,那么您可以按以下方式安装Serverless: # from within a service npm install serverless --save-dev 本地调用Serverless 要执行本地安装的Serverless,您必须引用node_ modules目录中的二进制文件,示例如下: node ./node_modules/serverless/bin/serverless deploy
  • 打包配置 有时,您可能希望对函数产物以及它们的打包方式有更多的控制。 您可以使用patterns配置来更多地控制打包过程。 Patterns 您可以定义将从结果产物中排除/包括的全局模式。如果您希望排除文件,可以使用前缀为“!”的全局模式,如:!exclude-me/**。Serverless Framework将运行全局模式,以便您始终可以重新包含以前排除的文件和目录。 示例 排除所有node_modules,然后专门使用exclude重新包含的特定模块(在本例中为node-fetch): package: patterns: - '!node_modules/**' - 'node_modules/node-fetch/**' 排除handler.js以外的所有文件: package: patterns: - '!src/**' - src/function/handler.js 如果要排除目录,请不要忘记使用正确的全局语法,可参考如下: package: patterns: - '!tmp/**' - '!.git/**'
  • 服务 服务是Framework的组织单位。您可以将其视为项目文件,单个应用可以拥有多个服务。可以在服务中定义函数、触发它们的事件以及函数使用的资源,所有这些都在一个名为serverless.yml(或serverless.json)的文件中,例如: # serverless.yml service: fgs functions: # Your "Functions" hello_world: events: # The "Events" that trigger this function - apigw: env_id: DEFAULT_ENVIRONMENT_RELEASE_ID env_name: RELEASE req_method: GET path: /test name: API_test 通过运行serverless deploy使用Framework进行部署时,serverless.yml中的所有内容都会同时部署。
共100000条