华为云用户手册

  • 前提条件 已获取API的调用信息,具体请参见认证前准备。 已安装Python安装包2.7.9或3.X版本,如果未安装,请至Python官方下载页面下载。 Python安装完成后,在cmd/shell窗口中使用pip安装“requests”库。 pip install requests 如果pip安装requests遇到证书错误,请下载并使用Python执行此文件,升级pip,然后再执行以上命令安装。 已安装IntelliJ IDEA 2018.3.5或以上版本,如果未安装,请至IntelliJ IDEA官方网站下载。 已在IntelliJ IDEA中安装Python插件,如果未安装,请按照图1所示安装。 图1 安装Python插件
  • 调用API示例 在工程中引入apig_sdk。 1 2 3 from apig_sdk import signer import requests import os 生成一个新的Signer,填入AppKey和AppSecret。 本示例以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 生成一个新的Signer,填入已设置的环境变量。 1 2 3 4 5 sig = signer.Signer() // 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. sig.Key = os.getenv('HUAWEICLOUD_SDK_AK') sig.Secret = os.getenv('HUAWEICLOUD_SDK_SK') 生成一个Request对象,指定方法名、请求uri、header和body。 1 2 3 4 r = signer.HttpRequest("POST", "https://c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com/app1?a=1", {"x-stage": "RELEASE"}, "body") 进行签名,执行此函数会在请求参数中添加用于签名的X-Sdk-Date头和Authorization头。 X-Sdk-Date是一个必须参与签名的请求消息头参数。 1 sig.Sign(r) 访问API,查看访问结果。 1 2 3 resp = requests.request(r.method, r.scheme + "://" + r.host + r.uri, headers=r.headers, data=r.body) print(resp.status_code, resp.reason) print(resp.content)
  • 获取SDK 请登录API网关控制台,参考《API网关用户指南》的“SDK”章节,进入SDK页面并下载SDK。 或直接下载SDK的最新版本,获取“ApiGateway-android-sdk.zip”压缩包,解压后目录结构如下: 名称 说明 app\ 安卓工程代码 gradle\ gradle相关文件 build.gradle gradle配置文件 gradle.properties settings.gradle gradlew gradle wrapper执行脚本 gradlew.bat
  • 调用API示例 在Android工程中的“app/libs”目录下,加入SDK所需jar包。其中jar包必须包括: java-sdk-core-x.x.x.jar commons-logging-1.2.jar joda-time-2.10.jar 在“build.gradle”文件中加入okhttp库的依赖。 在“build.gradle”文件中的“dependencies”下加入“implementation 'com.squareup.okhttp3:okhttp:3.14.2'”。 dependencies { ... ... implementation 'com.squareup.okhttp3:okhttp:3.14.3' } 创建request,输入AppKey和AppSecret,并指定 域名 、方法名、请求uri和body。 本示例以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 创建request,填入已设置的环境变量,并指定域名、方法名、请求uri和body。 Request request = new Request(); try { // 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. request.setKey(System.getenv("HUAWEICLOUD_SDK_AK")); request.setSecret(System.getenv("HUAWEICLOUD_SDK_SK")); request.setMethod("POST"); request.setUrl("https://c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com/app1"); request.addQueryStringParam("name", "value"); request.addHeader("Content-Type", "text/plain"); request.setBody("demo"); } catch (Exception e) { e.printStackTrace(); return; } 对请求进行签名,生成okhttp3.Request对象来访问API。 okhttp3.Request signedRequest = Client.signOkhttp(request); OkHttpClient client = new OkHttpClient.Builder().build(); Response response = client.newCall(signedRequest).execute();
  • 操作步骤 在FunctionGraph中开发函数。 下面以python2.7语言为例,函数代码需要满足如下条件: 函数代码支持三种请求参数定义,格式为: 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" } } “statusCode”字段为必选,函数服务正常且自定义认证函数代码符合规范时,statusCode的值则为自定义认证函数的响应码。 调用自定义认证的API,当自定义认证函数的响应码为非200时,API网关认为函数服务异常,并返回错误码“500”,错误信息为“Internal server error”。 调用自定义认证的API,如果自定义认证开启宽松模式,当自定义认证函数连接失败、返回“500”或者“503”时,自定义认证不会校验body字段里面的status字段,直接返回调用成功,同时从函数代码中获取到的context字段也为空。 “status”字段为必选,用于标识认证结果。只支持“allow”或“deny”,“allow”表示认证成功,“deny”表示认证失败。 “context”字段为可选,支持字符串类型键值对,当实例支持authorizer_context_support_num_bool特性时,键值对的值支持number类型或boolean类型,键值不支持JSON对象或数组。 context中的数据为您自定义的字段,认证通过后作为认证参数映射到API网关后端参数中,其中context中的参数名称与系统参数名称必须完全一致,且区分大小写,context中的参数名称必须以英文字母开头,支持英文大小写字母、数字、下划线和中划线,且长度为1 ~ 32个字符。 前端认证通过后,context中的user的值abc映射到后端服务Header位置的test参数中。 Header中的请求参数定义代码示例: # -*- coding:utf-8 -*- import json def handler(event, context): if event["headers"].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) 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) 测试函数。在测试事件的“事件模板”中选择“apig-event-template”,根据实际情况修改后保存测试模板,单击“测试”。 执行结果为“成功”时,表示测试成功。 接下来您需要进入API网关界面创建前端自定义认证。
  • 操作场景 如果您想要使用自己的认证系统对API的访问进行认证鉴权,您可以在API管理中创建一个前端自定义认证来实现此功能。在使用前端自定义认证对前端请求进行认证鉴权前,您需要先在FunctionGraph创建一个函数,通过函数定义您所需的认证信息。函数创建完后,作为自定义认证的后端函数,对API网关中的API进行认证鉴权。 本章节介绍如何将校验函数封装成一个“自定义认证”,以及封装成自定义认证过程中的操作注意事项。 图1 前端自定义认证示意图 使用自定义认证调用API的流程如下图所示: 图2 自定义认证调用API 自定义认证依赖函数服务。如果当前Region没有上线函数服务,则不支持使用自定义认证。
  • 操作场景 如果您需要使用一种认证机制对接多个不同的外部认证系统,实现对于后端服务的保护,您可以通过API网关中的后端自定义认证实现此功能。在使用后端自定义认证对后端请求进行认证授权前,您需要先在FunctionGraph创建一个函数,通过函数定义您所需的认证信息。函数作为自定义认证的后端函数,对API网关中的API进行认证授权。 图1 后端自定义认证示意图 使用自定义认证调用API的流程如下图所示: 图2 使用自定义认证调用API 自定义认证依赖函数服务。如果当前Region没有上线函数服务,则不支持使用自定义认证。
  • 操作步骤 在FunctionGraph中开发函数。 下面以python2.7为例,函数代码需要满足如下条件: 函数代码只支持您自定义的用户数据,且它的格式为:event["user_data"]。 函数代码获取的请求参数与API网关自定义认证中的参数关系为:函数请求参数中的自定义用户数据对应API网关自定义认证中的用户数据,参数值在您创建API网关自定义认证时输入,用户数据格式不限制,您可以自行指定。 函数的返回值不能大于1M,必须满足如下格式: { "statusCode":200, "body": "{\"status\": \"allow\", \"context\": {\"user\": \"abc\"}}" } 其中,body字段的内容为字符串格式,json解码之后为: { "status": "allow/deny", "context": { "user": "abc" } } “statusCode”字段为必选,函数服务正常且自定义认证函数代码符合规范时,statusCode的值则为自定义认证函数的响应码。 调用自定义认证的API,当自定义认证函数的响应码为非200时,API网关认为函数服务异常,并返回错误码“500”,错误信息为“Internal server error”。 调用自定义认证的API,如果自定义认证开启宽松模式,当自定义认证函数连接失败、返回“500”或者“503”时,自定义认证不会校验body字段里面的status字段,直接返回调用成功,同时从函数代码中获取到的context字段也为空。 “status”字段为必选,用于标识认证结果。只支持“allow”或“deny”,“allow”表示认证成功,“deny”表示认证失败。 “context”字段为可选,支持字符串类型键值对,当实例支持authorizer_context_support_num_bool特性时,键值对的值支持number类型和boolean类型,键值不支持JSON对象或数组。 context中的数据为您自定义的字段,认证通过后作为认证参数映射到API网关后端参数中,其中context中的参数名称与系统参数名称必须完全一致,且区分大小写。context中的参数名称必须以英文字母开头,支持英文大小写字母、数字、下划线和中划线,且长度为1 ~ 32个字符。 后端认证通过后,context中的user的值abc映射到后端服务Header位置的test参数中,并将其传递给API的后端服务。 用户数据定义代码示例: # -*- coding:utf-8 -*- import json import base64 def handler(event, context): exampleuserdata=base64.b64encode(event["user_data"]) resp = { 'statusCode': 200, 'body': json.dumps({ "status":"allow", "context":{ "user":exampleuserdata } }) } return json.dumps(resp) 测试函数。在测试事件的“事件模板”中选择“空白模板”,内容为: {"user_data": "123"} 根据实际情况修改后保存测试模板,单击“测试”。 执行结果为“成功”时,表示测试成功。 接下来您需要进入API网关界面创建后端自定义认证。
  • 调用API示例 使用JavaScript SDK生成curl命令。 请登录API网关控制台,参考《API网关用户指南》的“SDK”章节,进入SDK页面并下载SDK。 或直接下载JavaScript SDK的最新版本,并解压。在浏览器中打开demo.html,页面如下图所示。 填入Key、Secret、方法名、请求协议、域名和url。 1 2 3 4 5 6 // 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. Key=4f5f****100c Secret=****** Method=POST Url=https://c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com 填入json格式的Query和Headers,填入Body。 单击“Send request”,生成curl命令。将curl命令复制到命令行,访问API。 $ curl -X POST "https://c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com/" -H "X-Sdk-Date: 20180530T115847Z" -H "Authorization: SDK-HMAC-SHA256 Access=071fe245-9cf6-4d75-822d-c29945a1e06a, SignedHeaders=host;x-sdk-date, Signature=9e5314bd156d517******dd3e5765fdde4" -d "" Congratulations, sdk demo is running SDK生成的curl命令不符合Window下cmd终端格式,请在git bash下执行生成的curl命令。
  • 调用API(Node.js)示例 在工程中引入signer.js。 var signer = require('./signer') var https = require('https') 生成一个新的Signer,填入AppKey和AppSecret。 本示例以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 生成一个新的Signer,填入已设置的环境变量。 var sig = new signer.Signer() // 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. sig.Key = process.env.HUAWEICLOUD_SDK_AK sig.Secret = process.env.HUAWEICLOUD_SDK_SK 生成一个Request对象,指定方法名、请求uri和body。 var r = new signer.HttpRequest("POST", "c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com/app1?a=1"); r.body = '{"a":1}' 给请求添加x-stage头,内容为环境名。如有需要,添加需要签名的其他头域。 r.headers = { "x-stage":"RELEASE" } 进行签名,执行此函数会生成请求参数,用于创建http(s)请求,请求参数中添加了用于签名的X-Sdk-Date头和Authorization头。 var opts = sig.Sign(r) 访问API,查看访问结果。如果使用https访问,则将“http.request”改为“https.request”。 var req=http.request(opts, function(res){ console.log(res.statusCode) res.on("data", function(chunk){ console.log(chunk.toString()) }) }) req.on("error",function(err){ console.log(err.message) }) req.write(r.body) req.end()
  • 获取SDK 请登录API网关控制台,参考《API网关用户指南》的“SDK”章节,进入SDK页面并下载SDK。 或直接下载SDK的最新版本,获取“ApiGateway-javascript-sdk.zip”压缩包,解压后目录结构如下: 名称 说明 signer.js SDK代码 node_demo.js Nodejs示例代码 demo.html 浏览器示例代码 demo_require.html 浏览器示例代码(使用require加载) test.js 测试用例 js\hmac-sha256.js 依赖库 licenses\license-crypto-js 第三方库license文件 licenses\license-node
  • 前提条件 已获取API的调用信息,具体参见认证前准备。 已安装IntelliJ IDEA 2018.3.5或以上版本,如果未安装,请至IntelliJ IDEA官方网站下载。 已安装PHP安装包8.0.3或以上版本,如果未安装,请至PHP官方下载页面下载。 将PHP安装目录中的“php.ini-production”文件复制到“C:\windows”,改名为“php.ini”,并在文件中增加如下内容。 1 2 3 extension_dir = "php安装目录/ext" extension=openssl extension=curl 已在IntelliJ IDEA中安装PHP插件,如果未安装,请按照图1所示安装。 图1 安装PHP插件
  • 操作步骤 登录事件网格控制台。 在左侧导航栏选择“事件通道”,进入“事件通道”页面。 单击“创建事件通道”,弹出“创建事件通道”对话框。 输入事件通道名称、描述、企业项目和跨账号信息,单击“确定”,完成自定义事件通道的创建;具体参数可参考下表: 表1 创建自定义事件通道参数说明 参数名称 说明 通道名称 请输入通道名称。 描述 请输入描述。 企业项目 请选择企业项目。 说明: 关联企业项目后,不支持修改。 跨账号 选择是否开启跨账号。 说明: 启用跨账号后,允许指定账号向当前通道发布事件。 创建通道时需要开启跨账号开关,输入目标账号的ID。 同账号跨区域时目标通道也需要开启跨账号开关,输入本账号的ID。 账号ID 请输入被授权账号ID,多账号以逗号分隔。 说明: 支持配置最多3个账号,多账号以逗号分隔,如:“account1,account2”。 策略 { "Sid": "allow_account_to_put_events", "Effect": "Allow", "Principal": { " IAM ": [] }, "Action": "eg:channels:putEvents", "Resource": "urn:eg:cn-north-7:eeb7f0f587674635a3669e1d63013316:channel:" } 说明: 目前策略只读,不支持编辑。 事件通道创建成功后,在“自定义事件通道”区域查看创建的自定义事件通道。 如果需要修改自定义事件通道的描述信息,单击待修改事件通道后的“编辑”,在弹出的对话框中编辑描述信息。 如果需要查看自定义事件通道的信息,单击待查看信息的事件通道名称,在弹出的对话框中查看自定义事件通道信息。
  • 操作步骤 登录事件网格控制台。 在左侧导航栏选择“事件通道”,进入“事件通道”页面。 单击操作列“事件轨迹”,进入“事件轨迹”页面。 单击右侧“过滤”图标,进行查询。 表1 高级搜索条目参数说明 参数名称 说明 时间范围 选择事件发布时间范围。 查询类型 可选择“事件源和事件类型”和“投递状态和订阅名称”。 事件ID 输入事件ID。 单击“事件轨迹”,查看事件轨迹及事件接收、事件投递详情。 图1 查看事件轨迹 单击“事件ID”,可查看事件详情如图2所示。 图2 事件详情 投递失败的事件详情可在72小时内查询到,投递成功的事件详情72小时内无法保证一定能查询到。
  • 操作步骤 登录事件网格控制台。 在左侧导航栏选择“事件流”,进入“事件流”页面。 单击“创建事件流”。 在弹窗中输入事件流名称和描述,单击“确定”,完成事件流名称和描述信息输入。 配置Kafka事件源。 单击“事件源”,右侧弹出“事件源”弹窗。 事件提供方选择“分布式消息服务 Kafka版”。 设置事件源参数。 图1 事件源-Kafka 表1 Kafka参数说明 参数名称 说明 实例 选择Kafka实例。 接入方式 选择“密文接入”或“明文接入”。 安全协议 当选择为密文接入时会显示对应的安全协议。 Topic 选择Topic。 消费组 输入消费组。 并发数 输入并发数,输入值范围1~1000。 建议并发数与选择的Topic的分区数保持一致,如果不一致可能会影响消息消费速率。当您选择Topic时,如果并发数为空会读取您选择的Topic的分区数作为并发数。 消费点位 选择消费点位。 最新点位:将会从消息队列的最新消息开始消费。 最早点位:将会从消息队列的最早消息开始消费。 SASL认证机制 当Kafka实例开启SASL SSL时可见,选择SASL认证机制。 PLAIN:一种简单的用户名密码校验机制。 SC RAM -SHA-512:采用哈希算法对用户名与密码生成凭证,进行身份校验的安全认证机制,比PLAIN机制安全性更高。 SASL证书地址 当Kafka实例开启SASL SSL时可见,输入SASL证书地址。获取地址请参考如何获取分布式消息服务Kafka实例的SASL证书地址。 说明: 必须使用zip压缩包,压缩包内的文件数量不超过两个,压缩包和文件大小均不可超过1M; 压缩包里证书的名称必须是固定的:client.jks。 SASL证书密钥 当Kafka实例开启SASL SSL时可见,输入SASL证书密钥。 用户名 当Kafka实例开启SASL SSL时可见,输入实例用户名。 用户密码 当Kafka实例开启SASL SSL时可见,输入实例用户密码。 单击“保存”,完成配置事件源。 完成配置事件源后,您可以参考路由到 函数工作流 ,继续配置事件流的事件目标。 当事件源和事件目标都配置完成后,单击右上角“保存”,完成事件流的创建。 发送到目标端失败时,将重试整批事件,直到处理成功或源端消息过期为止,目标端需支持处理重复事件。
  • 创建自定义事件通道 登录事件网格控制台。 在左侧导航栏选择“事件通道”,进入“事件通道”页面。 单击“创建事件通道”,弹出“创建事件通道”对话框。 输入事件通道名称和描述信息,单击“确定”,完成自定义事件通道的创建。 事件通道创建成功后,在“自定义事件通道”区域查看创建的自定义事件通道。 如果需要修改自定义事件通道的描述信息,单击待修改事件通道后的“编辑”,在弹出的对话框中编辑描述信息。 如果需要查看自定义事件通道的信息,单击待查看信息的事件通道名称,在弹出的对话框中查看自定义事件通道信息。
  • 发布事件 本章节介绍在事件网格控制台如何发布事件。 您可以通过发布事件功能,调试事件订阅中事件源、事件通道、事件目标是否已是连通状态,已配置的事件规则是否生效,事件是否成功发送到事件目标。 前提条件: 已创建自定义事件通道、已创建自定义应用事件源、已设置事件目标,并基于上述内容创建事件订阅。 登录事件网格控制台。 在左侧导航栏选择“事件通道”,进入“事件通道”页面。 单击“发布事件”,进入“发布事件”页面。 配置事件条目。 表1 事件条目参数说明 参数名称 说明 事件通道 选择事件通道。 事件源 输入事件源,支持自定义应用事件源。 事件类型 输入事件类型。 事件详情 输入JSON格式事件内容。 时间戳 选择时间戳。 单击“预览”,预览事件。 单击“发布”,发送事件。事件发布成功结果如图1所示。 图1 发布事件 单击“添加事件条目”,可以配置多条事件信息。 支持发布单条事件,或同时发布多条事件。 单击,可以复制事件条目。 单击,可以删除事件条目。
  • 事件轨迹 本章节介绍在事件网格控制台如何追踪事件轨迹。 您可以通过事件轨迹功能,追踪查询事件源名称、事件类型、订阅名称及事件ID。 登录事件网格控制台。 在左侧导航栏选择“事件通道”,进入“事件通道”页面。 单击操作列“事件轨迹”,进入“事件轨迹”页面。 单击“高级搜索”,进行查询。 表2 高级搜索条目参数说明 参数名称 说明 时间范围 选择事件发布时间范围。 事件源名称 输入事件源名称。 事件类型 输入事件类型。 订阅名称 输入订阅名称。 事件ID 输入事件ID。 单击“事件轨迹”,查看事件接收和事件投递详情。 图2 事件轨迹 单击“事件ID”,可查看事件详情如图3所示。 图3 事件详情
  • 事件格式查看 前提条件: 创建rabbitmq实例。 图1 rabbitmq实例 创建和rabbitmq实例同一vpc、子网的访问端点。 创建事件通道。 图2 创建事件通道 创建rabbitmq事件源。 图3 rabbitmq事件源 创建rabbitmq事件订阅。 图4 创建rabbitmq事件订阅 图5 查看事件源状态 发送事件。 图6 发送事件 图7 安全组放通15671端口,地址栏输入公网访问Web界面UI地址 查看事件消息格式。 查看事件轨迹的事件详情: 图8 事件轨迹详情 消息体事件格式如下: { "datacontenttype": "application/json", "data": { "context": "11111" }, "subject": "RABBITMQ:cn-north-4:f003dc69-2fc3-4c44-9062-0b9a2c6cb8cc/0ef1e7a03280f3ed2f69c00c652a5744:RABBITMQ:source-rabbitmq", "specversion": "1.0", "id": "cd845ec7-0314-400d-9293-d39d7b258d9b", "source": "source-rabbitmq", "time": "2024-02-05T15:31:51Z", "type": "RABBITMQ:CloudTrace:RabbitmqCall" } 查看目标函数日志: 图9 目标函数日志
  • 创建RabbitMQ事件源 登录事件网格控制台。 在左侧导航栏选择“事件源”,进入“事件源”页面。 单击“自定义事件源”,弹出“创建自定义事件源”对话框。 参考表1,填写自定义事件源的配置信息。 表1 RabbitMQ事件源参数说明 参数名称 说明 配置类型 支持以下两种类型: 选择:选择一个已创建的自定义事件通道。 新建:创建一个新的自定义事件通道。 通道 “配置类型”为“选择”时,在下拉列表中选择一个已创建的自定义事件通道。 “配置类型”为“新建”时,输入事件通道名称和描述信息。 事件源创建成功后,事件通道不支持修改。 事件源名称 您自定义的事件源名称,用于识别不同的事件源。 事件源创建成功后,事件源名称不支持修改。 描述(可选) 事件源的描述信息。 事件源类型 事件源类型,选择“分布式消息服务RabbitMQ版”。 说明: 如之前未创建授权委托,事件源类型首次选择“分布式消息服务RabbitMQ版”时,系统会自动弹出创建委托授权界面,需要您创建授权委托,详情请查看授权委托。 RabbitMQ实例 消息队列RabbitMQ版中的实例名称。 用户名 RabbitMQ实例的用户名。 密码 RabbitMQ实例的密码。 Vhost RabbitMQ实例的 虚拟主机 。 Queue RabbitMQ实例的队列。 单击“确定”,完成自定义事件源的创建。 创建成功后,在“自定义事件源”页签,查看创建的事件源。 如果需要修改自定义事件源的描述信息,单击待修改事件源后的“编辑”,在弹出的对话框中编辑描述及相关参数信息。 如果需要查看自定义事件源的信息,单击待查看信息的事件源名称,在弹出的对话框中查看自定义事件源信息。
  • 事件格式查看 前提条件: 创建rocketmq实例。 图1 rocketmq实例 创建和rocketmq实例同一vpc、子网的访问端点。 创建事件通道。 图2 创建事件通道 创建rocketmq事件源。 图3 rocketmq事件源 创建rocketmq事件订阅。 图4 创建rocketmq事件订阅 图5 创建事件订阅成功后rocketmq事件源变为运行中 发送事件。 图6 发送事件 查看事件消息格式。 查看事件轨迹的事件详情: 图7 事件轨迹详情 消息体事件格式如下: { "datacontenttype": "application/json", "data": { "context": "{\"hello\":\"world\"}", "topic": "topic-test" }, "subject": "ROCKETMQ:cn-north-4:f003dc69-2fc3-4c44-9062-0b9a2c6cb8cc/0ef1e7a03280f3ed2f69c00c652a5744:ROCKETMQ:source-rocketmq", "specversion": "1.0", "id": "e6cc599b-0664-4078-87dd-5630087d5f7e", "source": "source-rocketmq", "time": "2024-02-05T14:20:31Z", "type": "ROCKETMQ:CloudTrace:RocketmqCall" } 查看目标函数日志: 图8 目标函数日志
  • 创建RocketMQ事件源 登录事件网格控制台。 在左侧导航栏选择“事件源”,进入“事件源”页面。 单击“自定义事件源”,弹出“创建自定义事件源”对话框。 参考表1,填写自定义事件源的配置信息。 表1 RocketMQ事件源参数说明 参数名称 说明 配置类型 支持以下两种类型: 选择:选择一个已创建的自定义事件通道。 新建:创建一个新的自定义事件通道。 通道 “配置类型”为“选择”时,在下拉列表中选择一个已创建的自定义事件通道。 “配置类型”为“新建”时,输入事件通道名称和描述信息。 事件源创建成功后,事件通道不支持修改。 事件源名称 您自定义的事件源名称,用于识别不同的事件源。 事件源创建成功后,事件源名称不支持修改。 描述(可选) 事件源的描述信息。 事件源类型 事件源类型选择“分布式消息服务RocketMQ版”。 说明: 如之前未创建授权委托,事件源类型首次选择“分布式消息服务RocketMQ版”时,系统会自动弹出创建委托授权界面,需要您创建授权委托,详情请查看授权委托。 RocketMQ实例 选择消息队列RocketMQ版中的实例名称。 若选择“无”,表示添加用户自建的消息队列RocketMQ版实例。 Topic RocketMQ实例的Topic。 消费组 RocketMQ实例的消费组。 用户名 RocketMQ实例开启ACl访问控制的时候需要填写实例的用户名。 密钥 RocketMQ实例开启ACl访问控制的时候需要填写实例的密钥。 虚拟私有云 当“RocketMQ实例”选择“无”时参数可见,选择虚拟私有云。 子网 当“RocketMQ实例”选择“无”时参数可见,选择子网。 连接地址 当“RocketMQ实例”选择“无”时参数可见,输入自建RocketMQ版实例的连接地址。 SSL 当“RocketMQ实例”选择“无”时参数可见,配置是否开启SSL。 说明: 自建RocketMQ事件源处于“运行中”时,不支持修改SSL。如果涉及SSL变化,建议该事件源删除重建。 ACL访问控制 当“RocketMQ实例”选择“无”时参数可见,配置是否开启ACL访问控制。 单击“确定”,完成自定义事件源的创建。 创建成功后,在“自定义事件源”页签,查看创建的事件源。 如果需要修改自定义事件源的描述信息,单击待修改事件源后的“编辑”,在弹出的对话框中编辑描述及相关参数信息。 如果需要查看自定义事件源的信息,单击待查看信息的事件源名称,在弹出的对话框中查看自定义事件源信息。
  • 监控指标 表1 监控指标说明 指标ID 指标名称 指标含义 取值范围 测量对象 监控周期(原始值) streaming_process_num 处理事件数量 该指标为单位时间处理事件数量 ≥ 0 事件流 1分钟 streaming_success_num 处理成功事件数量 该指标为单位时间处理成功事件数量 ≥ 0 事件流 1分钟 streaming_success_rate 处理事件成功率 该指标为单位时间处理事件成功率 0-100% 事件流 1分钟 streaming_failed_num 处理事件失败数量 该指标为单位时间处理事件失败数量 ≥ 0 事件流 1分钟 streaming_failed_rate 处理事件失败率 该指标为单位时间处理事件失败率 0-100% 事件流 1分钟 streaming_process_time 事件平均处理耗时 该指标为单位时间事件平均处理耗时 ≥ 0 ms 事件流 1分钟 表2 维度说明 维度 Key Value 事件流 streaming_id 事件流ID
  • 操作步骤 登录事件网格控制台。 在左侧导航栏选择“事件模型”,进入“事件模型”页面。 在“自定义事件模型”页签中,通过以下任意一种方式删除自定义事件模型。 单击待删除自定义事件模型后的“删除”,弹出“删除事件模型”对话框。 单击待删除自定义事件模型的标识,进入自定义事件模型详情页。单击“删除”,弹出“删除事件模型”对话框。 勾选自定义事件模型标识左侧的方框,可选一个或多个,单击信息栏左上侧的“批量删除”,弹出“删除事件模型”对话框。 单击“确定”,完成自定义事件模型的删除。
  • 操作步骤: 创建事件通道。 图2 创建事件通道 创建rabbitmq事件源。 图3 创建rabbitmq事件源 创建rabbitmq事件订阅。 图4 创建rabbitmq事件订阅 查看事件源状态 图5 查看事件源状态 发送事件。 图6 发送事件 安全组放通15671端口,地址栏输入公网访问Web界面UI地址: 查看事件消息格式。 查看事件轨迹的事件详情: 图7 查看事件详情 消息体事件格式如下: { "datacontenttype": "application/json", "data": { "context": "11111" }, "subject": "RABBITMQ:cn-north-4:f003dc69-2fc3-4c44-9062-0b9a2c6cb8cc/0ef1e7a03280f3ed2f69c00c652a5744:RABBITMQ:source-rabbitmq", "specversion": "1.0", "id": "cd845ec7-0314-400d-9293-d39d7b258d9b", "source": "source-rabbitmq", "time": "2024-02-05T15:31:51Z", "type": "RABBITMQ:CloudTrace:RabbitmqCall" } 查看目标函数日志: 图8 查看目标函数日志
  • 创建新版本 登录事件网格控制台。 在左侧导航栏选择“事件模型”,进入“事件模型”页面。 在“自定义事件模型”页签中,通过以下任意一种方式创建新版本。 单击待创建新版本的自定义事件模型后的“添加版本”,弹出“添加版本”对话框。 单击待创建新版本的自定义事件模型的标识,进入自定义事件模型详情页。在“版本列表”页签,单击“添加版本”,弹出“添加版本”对话框。 输入版本内容,单击“确定”,完成新版本的创建。
  • 操作步骤 登录事件网格控制台。 在左侧导航栏选择“事件路由”,进入“事件路由”页面。 图1 事件路由页面 单击“创建事件路由任务”,进入创建详情页。 配置“任务基本配置”。 图2 任务基本配置 表1 任务基本配置参数说明 参数 说明 任务名称 请输入任务名称 描述 请输入对本任务的描述。 配置“源端和目标端配置”。 当源端和目标端均为Kafka时: 图3 源端和目标端配置 源端类型:Kafka 目标端类型:Kafka 规格(QPS):选择为2000、5000、9000、15000或>20000。 表2 源端目标端配置参数说明 参数 说明 配置类型 请选择“Kafka地址”或“实例名称”。 选择为“Kafka地址”类型时,请配置以下参数: Kafka地址 请输入Kafka地址。 说明: 支持配置多个地址以逗号分隔,例如:192.168.0.1:111,192.168.0.2:222。 虚拟私有云 请选择虚拟私有云。 子网 请选择子网。 安全协议 请选择安全协议为“SASL_SSL”、“SASL_PLAINTEXT”或“PLAINTEXT”。 认证机制 请选择认证机制为“SCRAM-SHA-512”或“PLAIN”。 用户名 请输入用户名。 密码 请输入密码。 选择为“实例名称”类型时,请配置以下参数: 实例名称 请选择Kafka实例。 接入方式 请选择“密文接入”或“明文接入”。 安全协议 默认为“SASL_SSL”。 认证机制 请选择认证机制为“SCRAM-SHA-512”或“PLAIN”。 用户名 请输入用户名。 密码 请输入密码。 配置“任务对象配置”。 图4 任务对象配置 表3 任务对象配置参数说明 参数 说明 Topics 选择“正则表达式”或“输入/选择”。 说明: 当选择“正则表达式”时需在下方输入表达式。 同步消费进度 请选择是否打开。 说明: 打开后会将消息消费进度同步到目标Kafka。 当前同步的进度有100以内的误差。 副本数 请配置副本数。 说明: 自动创建的Topic副本数,不能超过目标端Kafka的Broker数量。 启动偏移量 请选择为“最早”或“最新”。 压缩算法 请选择压缩算法为“none”、“gzip”、“snappy”、“lz4”或“zstd”。 Topic映射 请输入要映射的源端Topic和目标端Topic名称,单击“保存”。 说明: 如果源端和目标端的kafka是同一个实例,则建议配置topic映射,否则可能导致topic中的数据出现循环复制。 Topic映射的名称不能相同。 完成参数配置后单击“立即购买”,完成事件路由创建,创建成功后可在事件路由页面查看任务状态。 事件路由任务创建完成后默认为“未启用”状态,需要单击“启用”按钮,待状态显示为“运行中”时,任务正式启用。 图5 启用事件路由 事件路由公测期间免费。 如果源端kafka和目标端kafka在不同vpc里,但是他们的broker地址存在重叠,这种情况任务也会失败,规避方式是让用户用一个新的vpc打通其中一个kafka的网络,保障源端和目标端的地址不重叠。 创建任务成功后,会生成mm2开头的Topic,此为运行任务资源所需,请勿删除,若删除此任务后,则Topic可删除。
  • 操作步骤 登录事件网格控制台。 在左侧导航栏选择“事件流”,进入“事件流”页面。 单击“创建事件流”。 在弹窗中输入事件流名称和描述,单击“确定”,完成事件流名称和描述信息输入。 请参考配置分布式消息服务 Kafka版,配置事件源。 配置事件目标。 单击“事件目标”,右侧弹出“事件目标”弹窗。 目标服务选择“分布式消息服务 Kafka版”。 设置事件目标参数。 图1 分布式消息服务 Kafka版 表1 分布式消息服务 Kafka版参数说明 参数名称 说明 目标连接 选择目标连接。如果还未创建目标连接,请先创建分布式消息服务Kafka版目标连接,如何创建请参见目标连接。 Topic 选择Topic。先选目标连接以加载Topic选项。 消息Key配置 关闭 不启用消息Key。 开启 变量:从CloudEvents标准事件中获取变量值,将变量值作为Key值。 常量:将指定的常量作为key值。若选择常量,所有消息将发送至同一分区。 规则配置 类型 事件网格将CloudEvents标准事件转换成事件目标可以接受的事件类型。支持以下三种转换类型: 透传:事件网格不对事件进行转换,将原生事件的完整结构直接路由到事件目标。 变量:事件网格EventGrid通过JSONPath从事件中提取参数,然后把这些参数路由到事件目标。 常量:事件只起到触发器的作用,不管事件内容是什么,事件网格都把常量路由到事件目标。 如果需要了解更多转换类型的信息,请参考事件内容转换。 消息推送 批量推送 配置是否开启批量推送,批量推送可帮您批量聚合多个事件。 批量推送条数 推送间隔 开启批量推送可见,每次批量推送的最大聚合条数,默认值100,输入值范围1~10000。 开启批量推送可见,输入批量推送间隔,默认值1,输入值范围0~15,单位:秒。
  • 操作步骤 登录事件网格控制台。 在左侧导航栏选择“事件模型”,进入“事件模型”页面。 在“自定义事件模型”页签中,通过以下任意一种方式编辑自定义事件模型。 单击待编辑自定义事件模型后的“编辑”,弹出“编辑自定义事件模型”对话框。 单击待编辑自定义事件模型的标识,进入自定义事件模型详情页。单击“编辑”,弹出“编辑自定义事件模型”对话框。 根据实际需求,修改自定义事件模型的描述信息、版本兼容方法和版本内容,单击“确定”。
  • 操作步骤 登录事件网格控制台。 在左侧导航栏选择“事件流”,进入“事件流”页面。 单击“创建事件流”。 在弹窗中输入事件流名称和描述,单击“确定”,完成事件流名称和描述信息输入。 请参考配置分布式消息服务 Kafka版,配置事件源。 配置事件目标。 单击“事件目标”,右侧弹出“事件目标”弹窗。 目标服务选择“ 对象存储服务 OBS”。 设置事件目标参数。 图1 对象存储服务OBS 表1 对象存储服务OBS参数说明 参数名称 说明 AK 请输入AK。 说明: 如何获取AK/SK,请参考如何获取访问密钥AK/SK。 SK 请输入SK。 桶 请选择/输入OBS桶名称。 转储目录 请输入转储目录。 说明: OBS桶中对象的目录,多级目录用“/”分隔。 时间目录格式 请选择时间目录格式。 说明: 数据将存储在转储目录下的时间目录中,时间目录是按时间格式作为层级的目录。 例如,当选择的时间目录格式精确到日时,存储目录为:“桶名称/转储目录/年/月/日”。 规则配置 类型 事件网格将CloudEvents标准事件转换成事件目标可以接受的事件类型。支持以下三种转换类型: 透传:事件网格不对事件进行转换,将原生事件的完整结构直接路由到事件目标。 变量:事件网格EventGrid通过JSONPath从事件中提取参数,然后把这些参数路由到事件目标。 常量:事件只起到触发器的作用,不管事件内容是什么,事件网格都把常量路由到事件目标。 如果需要了解更多转换类型的信息,请参考事件内容转换。 消息推送 批量推送 配置是否开启批量推送,批量推送可帮您批量聚合多个事件。 批量推送条数 推送间隔 开启批量推送可见,每次批量推送的最大聚合条数,默认值100,输入值范围1~10000。 开启批量推送可见,输入批量推送间隔,默认值1,输入值范围0~15,单位:秒。
共100000条