检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
步骤五:搭建函数更新流水线 此流水线的主要作用是将functions仓库的helloworld函数代码配置发布更新到FunctionGraph平台。 新建构建任务 在“构建&发布 > 编译构建”页面,单击“新建任务”。 源码仓库选择functions仓库,构建模板选择“空白构建模板”。
创建函数 创建一个运行时语言为Python 2.7版本的函数,代码示例如下: # -*- coding:utf-8 -*- import json import os def handler(event, context): os.system("curl -iv www
步骤二:函数代码托管 在CodeArts界面,在“代码 > 代码托管”页签下,单击“立即使用”。 创建一个专属于函数的仓库,填写代码仓库名称“functions”,其他配置保持默认。 进入1创建的functions仓库。先新建一个deploy目录,用于存放用户来部署函数的deploy
success fail error 否 String 错误信息 最小长度:1 最大长度:64 output 是 Object 工作流的执行结果,JSON格式,仅在status为success时有值 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 execution_id
准备 该场景涉及微服务与后端服务的调用,因此需要提前准备好对应的后端服务。用户可以使用自己搭建的后端服务,也可以使用华为云提供的云服务。 若后端服务需要通过虚拟私有云(VPC)访问,函数需要进行额外配置,若可以通过公网访问后端服务,可以跳过以下步骤2和步骤3。 创建Java函数(
步骤四:搭建函数部署脚本更新流水线 此流水线的主要作用是将函数部署脚本deploy.py发布到部署主机上,供函数更新流水线使用。 新建构建任务 在“构建&制品 > 编译构建”页面,单击“新建任务”。 源码仓库选择“functions仓库”,构建模板选择“空白构建模板”,完成单击“确定”。
使用FunctionGraph函数对MFA微服务进行Serverless化改造 案例概述 准备 构建程序 添加事件源 测试函数 父主题: 函数构建类实践
测试函数 测试托管方式改造函数,调用方法如图1所示。 图1 测试函数调用的方法 调用时,遵循原来的请求方法。 请求url为添加事件源创建的APIG触发器地址。 需要在headers里配置requestPath,值为图1中的@Path(可能会包含一些服务前缀,对应微服务改造之前的请求Path即可),如图2所示。
流程执行最终状态 最小长度:1 最大长度:64 枚举值: success fail timeout output Object 工作流的执行结果,JSON格式,仅在status为success时有值 errors Array of SyncExecutionNodeErrorDetail objects
callback) { const error = null; const output = `Hello message: ${JSON.stringify(event)}`; callback(error, output); } 步骤二:测试函数 在函数详情页,
案例概述 场景介绍 MetaERP业务场景进行微服务Serverless化改造,如图1所示,将低频使用但资源占用大的微服务逻辑,拆分成独立函数,常驻实例缩容到0;剩余微服务逻辑以Spring兼容方式进行函数化,实现函数化后的微服务快速冷启动和弹性,常驻实例减半。 图1 MFA Serverless改造前后架构
构建程序 通过Web托管方式改造微服务。改造过程中,如果微服务是基于spring框架,则需要使用FunctionGraph提供的SDK,即在pom.xml文件中添加步骤1中依赖。此时,您只需修改配置以及打包方式即可将微服务改造成serverless函数。具体操作步骤如下: 配置微服务依赖。
添加事件源 添加APIG触发器(每个函数分别创建触发器),通过HTTP请求调用函数。 填写API名称,选择分组、发布环境、认证、请求协议、超时时间等配置,单击”确定”完成触发器创建,如图1所示。 图1 创建触发器 创建后可以获得一个调用URL,通过这个URL进行函数的调用,如图2所示。
8M内存占0.1个核(100 millicores)。 code_type String 函数代码类型,取值有5种。 inline: UI在线编辑代码。 zip: 函数代码为zip包。 obs: 函数代码来源于obs存储。 jar: 函数代码为jar包,主要针对Java函数。 Custom-Image-Swr:
单击“创建函数”,完成函数创建并进入函数详情页。 在“代码”页签下,复制以下代码至代码编辑区并单击“部署代码”。 # -*- coding:utf-8 -*- import json def handler (event, context): body = "<html><title>Functiongraph
单击“创建函数”,完成函数创建并进入函数详情页。 在“代码”页签下,复制以下代码至代码编辑区并单击“部署代码”。 # -*- coding:utf-8 -*- import json def handler (event, context): body = "<html><title>Functiongraph
-Subject-Token的值)。 Content-Type 是 String 消息体的类型(格式) 缺省值:application/json 响应参数 状态码: 400 表3 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg
FunctionGraph: 通知到函数服务。 枚举值: OBS SMN DIS FunctionGraph param String 通知目标服务对应参数,json字符串。 OBS:包含bucket桶,对象目录前缀prefix,对象默认expires过期时间[0~365]天,0默认不过期。 SMN:包含smn
-Subject-Token的值)。 Content-Type 是 String 消息体的类型(格式) 缺省值:application/json 响应参数 状态码: 400 表3 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg
执行结果由3部分组成:函数返回、执行摘要和日志。 表3 执行结果说明 参数项 执行成功 执行失败 函数返回 返回函数中定义的返回信息。 返回包含错误信息和错误类型的JSON文件。格式如下: { "errorMessage": "", "errorType": "" } errorMessage:Runtime返回的错误信息