云服务器内容精选
-
Node.js的initializer入口介绍 FunctionGraph目前支持以下Node.js运行环境: Node.js6.10 (runtime = Node.js6) Node.js8.10 (runtime = Node.js8) Nodejs10.16(runtime = Node.js10) Nodejs12.13(runtime = Node.js12) Node.js14.18(runtime = Node.js14) Node.js16.17(runtime = Node.js16) Node.js18.15(runtime = Node.js18)
-
执行结果 执行结果由3部分组成:函数返回、执行摘要和日志。 表2 执行结果说明 参数项 执行成功 执行失败 函数返回 返回函数中定义的返回信息。 返回包含错误信息和错误类型的JSON文件。格式如下: { "errorMessage": "", "errorType":"", } errorMessage:Runtime返回的错误信息 errorType:错误类型 执行摘要 显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 日志 打印函数日志,最多显示4KB的日志。 打印报错信息,最多显示4KB的日志。
-
SDK接口 Context类中提供了许多上下文方法供用户使用,其声明和功能如表1所示。 表1 Context类上下文方法说明 方法名 方法说明 getRequestID() 获取请求ID。 getRemainingTimeInMilliSeconds () 获取函数剩余运行时间。 getAccessKey() 获取用户委托的AccessKey(有效期24小时),使用该方法需要给函数配置委托。 说明: 当前 函数工作流 已停止维护Runtime SDK 中getAccessKey接口,您将无法使用getAccessKey获取临时AK。 getSecretKey() 获取用户委托的SecretKey(有效期24小时),使用该方法需要给函数配置委托。 说明: 当前函数工作流已停止维护Runtime SDK 中getSecretKey接口,您将无法使用getSecretKey获取临时SK。 getSecurityAccessKey() 获取用户委托的SecurityAccessKey(有效期24小时),使用该方法需要给函数配置委托。 getSecuritySecretKey() 获取用户委托的SecuritySecretKey(有效期24小时),使用该方法需要给函数配置委托。 getSecurityToken() 获取用户委托的SecurityToken(有效期24小时),使用该方法需要给函数配置委托。 getUserData(string key) 通过key获取用户通过环境变量传入的值。 getFunctionName() 获取函数名称。 getRunningTimeInSeconds () 获取函数超时时间。 getVersion() 获取函数的版本。 getMemorySize() 分配的内存。 getCPUNumber() 获取函数占用的CPU资源。 getPackage() 获取函数组。 getToken() 获取用户委托的token(有效期24小时),使用该方法需要给函数配置委托。 getLogger() 获取context提供的logger方法,返回一个日志输出类,通过使用其info方法按“时间-请求ID-输出内容”的格式输出日志。 如调用info方法输出日志: logg = context.getLogger() logg.info("hello") getAlias 获取函数的别名 getToken()、getAccessKey()和getSecretKey()方法返回的内容包含敏感信息,请谨慎使用,避免造成用户敏感信息的泄露。
-
函数定义 PHP 7.3函数的接口定义如下所示: function handler($event, $context) 入口函数名($handler):入口函数名称, 需和函数执行入口处用户自定义的入口函数名称一致。 执行事件($event):函数执行界面由用户输入的执行事件参数, 格式为JSON对象。 上下文环境($context):Runtime提供的函数执行上下文,其接口定义在SDK接口说明。 函数执行入口: index.handler。 函数执行入口格式为“[文件名].[函数名]”。例如创建函数时设置为index.handler,那么FunctionGraph会去加载index.php中定义的handler函数。
-
执行结果 执行结果由3部分组成:函数返回、执行摘要和日志。 表2 执行结果说明 参数项 执行成功 执行失败 函数返回 返回函数中定义的返回信息。 返回包含错误信息、错误类型和堆栈异常报错信息的JSON文件。格式如下: { "errorMessage": "", "errorType": "", "stackTrace": {} } errorMessage:Runtime返回的错误信息 errorType:错误类型 stackTrace:Runtime返回的堆栈异常报错信息 执行摘要 显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 日志 打印函数日志,最多显示4KB的日志。 打印报错信息,最多显示4KB的日志。
-
函数定义 建议使用Python 3.6版本。 对于Python,FunctionGraph运行时支持Python 2.7版本、Python 3.6、Python3.9、Python3.10版本。 函数有明确的接口定义,如下所示。 def handler (event, context) 入口函数名(handler):入口函数名称,需和函数执行入口处用户自定义的入口函数名称一致。 执行事件(event): 函数执行界面由用户输入的执行事件参数, 格式为JSON对象。 上下文环境(Context):Runtime提供的函数执行上下文,其接口定义在SDK接口说明。
-
Python的initializer入口介绍 FunctionGraph目前支持以下Python运行环境。 Python 2.7 (runtime = python2.7) Python 3.6 (runtime = python3) Python 3.9(runtime = python3) Python 3.10(runtime = python3) Initializer入口格式为: [文件名].[initializer名] 示例:实现initializer接口时指定的Initializer入口为main.my_initializer,那么FunctionGraph会去加载main.py中定义的my_initializer函数。 在FunctionGraph中使用Python编写initializer,需要定义一个Python函数作为initializer入口,一个最简单的initializer(以Python 2.7版本为例)示例如下。 def my_initializer(context): print 'hello world!' 函数名 my_initializer需要与实现initializer接口时的Initializer字段相对应,实现initializer接口时指定的Initializer入口为main.my_initializer ,那么函数服务会去加载main.py中定义的my_initializer函数。 context参数 context参数中包含一些函数的运行时信息,例如:request id、临时AccessKey、function meta等。
-
执行结果 执行结果由3部分组成:函数返回、执行摘要和日志。 表2 执行结果说明 参数项 执行成功 执行失败 函数返回 返回函数中定义的返回信息。 返回包含错误信息、错误类型和堆栈异常报错信息的JSON文件。格式如下: { "errorMessage": "", "errorType": "", "stackTrace": [] } errorMessage:Runtime返回的错误信息 errorType:错误类型 stackTrace:Runtime返回的堆栈异常报错信息 执行摘要 显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 日志 打印函数日志,最多显示4KB的日志。 打印报错信息,最多显示4KB的日志。
-
SDK接口 Context类中提供了许多上下文方法供用户使用,其声明和功能如表1所示。 表1 Context类上下文方法说明 方法名 方法说明 getRequestID() 获取请求ID。 getRemainingTimeInMilliSeconds () 获取函数剩余运行时间。 getAccessKey() 获取用户委托的AccessKey(有效期24小时),使用该方法需要给函数配置委托。 说明: 当前函数工作流已停止维护Runtime SDK 中getAccessKey接口,您将无法使用getAccessKey获取临时AK。 getSecretKey() 获取用户委托的SecretKey(有效期24小时),使用该方法需要给函数配置委托。 说明: 当前函数工作流已停止维护Runtime SDK 中getSecretKey接口,您将无法使用getSecretKey获取临时SK。 getSecurityAccessKey() 获取用户委托的SecurityAccessKey(有效期24小时),使用该方法需要给函数配置委托。 getSecuritySecretKey() 获取用户委托的SecuritySecretKey(有效期24小时),使用该方法需要给函数配置委托。 getSecurityToken() 获取用户委托的SecurityToken(有效期24小时),使用该方法需要给函数配置委托。 getUserData(string key) 通过key获取用户通过环境变量传入的值。 getFunctionName() 获取函数名称。 getRunningTimeInSeconds () 获取函数超时时间。 getVersion() 获取函数的版本。 getMemorySize() 分配的内存。 getCPUNumber() 获取函数占用的CPU资源。 getPackage() 获取函数组。 getToken() 获取用户委托的token(有效期24小时),使用该方法需要给函数配置委托。 getLogger() 获取context提供的logger方法,返回一个日志输出类,通过使用其info方法按“时间-请求ID-输出内容”的格式输出日志。 如调用info方法输出日志: log = context.getLogger() log.info("test") getAlias 获取函数的别名 getToken()、getAccessKey()和getSecretKey()方法返回的内容包含敏感信息,请谨慎使用,避免造成用户敏感信息的泄露。
-
添加引用 选择解决方案资源管理器中“test”工程,单击鼠标右键,选择“添加引用”,把下载的dll文件引用进来。如图4所示。 图4 添加引用 所引用的dll下载后放在一个lib文件中,一共有三个库:HC.Serverless.Function.Common.dll、HC.Serverless.Function.Common.JsonSerializer.dll、Newtonsoft.Json.dll。 选择“浏览”,单击“浏览(B) ”,把HC.Serverless.Function.Common.dll和HC.Serverless.Function.Common.JsonSerializer.dll引用进来,单击“确定”。如图5所示。 图5 引用文件 引用成功后界面如图6所示。 图6 完成引用
-
创建委托 如下示例表示:为FuntionGraph赋予VPC Administrator权限,仅在授权区域生效。 按照如下参数设置委托,创建委托的具体步骤请参见如何创建委托。 登录 统一身份认证 服务( IAM )控制台。 在统一身份认证服务(IAM)的左侧导航窗格中,选择“委托”页签,单击右上方的“+创建委托”。 图1 创建委托 开始配置委托。 图2 填写基本信息 委托名称:serverless-trust。 委托类型:选择“云服务”。 云服务:选择“函数工作流 FunctionGraph”。 持续时间:选择“永久”。 描述:填写描述信息。 单击“下一步”,进入委托选择页面,在右方搜索框中搜索需要添加的权限并勾选。此处以添加VPC Administrator权限为例。 图3 选择策略 表2 委托权限示例 权限名称 使用描述/场景 VPC Administrator 虚拟私有云服务管理员。 单击“下一步”,选择权限的作用范围。 图4 根据业务需要选择对应的权限
-
应用场景 若您在FunctionGraph服务中使用如下场景,请先创建委托。创建委托时授予的权限类型请您根据实际业务需要进行调整,比如前期您在开发阶段授予Admin权限,后期在生产环境中建议您调整为细粒度最小使用权限,保证业务所需权限的同时,也降低权限过大的风险。具体对应授权项参见表1 常见授权项选择进行选择。 表1 常见授权项选择 场景 Admin权限 细粒度最小使用权限 说明 使用 自定义镜像 SWR Administrator 暂不支持 SWR Admin: 容器镜像服务 (SWR)管理员,拥有该服务下的所有权限。 如何创建自定义镜像,请参见使用容器镜像部署函数。 挂载SFS文件系统 SFS Administrator 暂不支持 SFS Administrator:弹性文件服务(SFS)管理员,拥有该服务下的所有权限。 如何挂载SFS文件系统,请参见添加SFS容量型文件系统。 挂载sfs turbo文件系统 SFS Turbo ReadOnlyAccess sfsturbo:shares:getShare(查询单个文件系统详细信息) sfsturbo:shares:showFsDir(查询目录是否存在) SFS Turbo ReadOnlyAccess:弹性文件服务SFS Turbo的只读权限。 sfsturbo:shares:getShare:您拥有SFS服务下查询单个文件系统信息的权限。 sfsturbo:shares:showFsDir:您拥有SFS服务下查询目录是否存在的权限。 如何挂载挂载sfs turbo文件系统,请参见添加sfs turbo文件系统。 挂载E CS 共享目录 ECS ReadOnlyAccess ecs:cloudServers:get(查询云服务器详情) ECS ReadOnlyAccess:弹性云服务器的只读访问权限。 ecs:cloudServers:get:您拥有ECS服务下查询云服务器信息的权限。 如何挂载ECS共享目录,请参见添加ECS共享目录。 配置预留实例策略 AOM ReadOnlyAccess aom:metric:get(查询指标) aom:metric:list(查询指标列表) AOM ReadOnlyAccess: 应用运维管理 服务只读权限。 aom:metric:get:您拥有AOM服务下查询某个指标信息的权限。 aom:metric:list:您拥有AOM服务下查询指标列表详情的权限。 使用DIS触发器 DIS Administrator 暂不支持 数据接入服务 (DIS)管理员,拥有该服务下的所有权限。 如何创建DIS触发器,请参见使用DIS触发器。 使用DMS触发器 DMS ReadOnlyAccess dms:instance:get(查看实例详情信息) DMS ReadOnlyAccess:分布式消息服务只读权限。 dms:instance:get:您拥有DMS服务下查看实例详情信息的权限。 配置跨域VPC访问 VPC Administrator vpc:ports:get(查询端口) vpc:ports:create(创建端口) vpc:vpcs:get(查询VPC) vpc:subnets:get(查询子网) vpc:vips:delete(虚IP解绑VM) vpc:securityGroups:get(查询安全组列表或详情) 拥有VPC Administrator权限的用户可以对VPC内所有资源执行任意操作。在函数配置跨VPC访问时,则函数必须配置具备VPC管理权限的委托。 VPC细粒度最小使用权限:您拥有VPC服务下虚IP解绑VM、查询端口、创建端口、查询VPC、查询子网、查询安全组列表或详情的权限。 如何配置跨域VPC访问,请参见配置网络。 DNS 域名 解析 DNS ReadOnlyAccess dns:recordset:get(查询租户Record Set资源) dns:zone:get(查询租户zone) dns:recordset:list(查询Record Set列表) dns:zone:list(查询zone列表) DNS ReadOnlyAccess:云解析服务只读权限,拥有该权限的用户仅能查看云解析服务资源。在函数配置调用DNS服务的接口解析内网域名时,则函数必须具备读取DNS资源权限的委托。 DNS细粒度最小使用权限:您拥有DNS服务下查询租户Record Set资源列表和查询租户zone列表的权限。 如何调用DNS服务的接口解析内网域名,请参见解析DNS内网域名。 开启异步通知 目标服务为OBS时: OBS Administrator obs:bucket:HeadBucket(获取桶元数据) obs:bucket:CreateBucket(创建桶) obs:object:PutObject(PUT上传、POST上传、复制对象、追加写对象、初始化上传段任务、上传段、合并段) OBS Administrator: 对象存储服务 管理员,拥有该服务下的所有权限。 OBS细粒度最小使用权限:您拥有OBS服务下获取桶元数据、创建通、PUT上传、POST上传、复制对象、追加写对象、初始化上传段任务、上传段、合并段的权限。 如何配置异步通知请参见配置函数异步。 目标服务为 SMN 时: SMN Administrator smn:topic:publish(发布消息) smn:topic:list(查询主题列表) SMN Administrator: 消息通知 服务管理员,拥有该服务下的所有权限。 SMN细粒度最小使用权限:您拥有SMN服务下发布消息、查询主题列表的权限。 如何配置异步通知请参见配置函数异步。 目标服务为DIS时: DIS Administrator 暂不支持 DIS Administrator:数据接入服务管理员,拥有该服务下的所有权限。 如何配置异步通知请参见配置函数异步。
-
执行结果 执行结果由3部分组成:函数返回、执行摘要和日志。 表23 执行结果说明 参数项 执行成功 执行失败 函数返回 返回函数中定义的返回信息。 返回包含错误信息和堆栈异常报错信息的JSON文件。格式如下: { "errorMessage": "", "stackTrace": [] } errorMessage:Runtime返回的错误信息 stackTrace:Runtime返回的堆栈异常报错信息 执行摘要 显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 日志 打印函数日志,最多显示4KB的日志。 打印报错信息,最多显示4KB的日志。
-
函数定义 函数有明确的接口定义,如下: 作用域 返回参数 函数名(函数参数,Context参数) 作用域:提供给FunctionGraph调用的用户函数必须定义为public。 返回参数:用户定义,FunctionGraph负责转换为字符串,作为HTTP Response返回。对于返回参数对象类型,HTTP Response该类型的JSON字符串。 函数名:用户定义函数名称。 用户定义参数,当前函数只支持一个用户参数。对于复杂参数,建议定义为对象类型,以JSON字符串提供数据。FunctionGraph调用函数时,解析JSON为对象。 Context:runtime提供函数执行上下文,其接口定义在SDK接口说明。 创建Java函数时,函数入口参数需要提供函数完整的名字空间,参数格式为:包名.类名.函数名。
-
Java的initializer入口介绍 函数服务目前支持以下Java运行环境。 Java 8 (runtime = Java8) Java 11(runtime = Java11) Initializer格式为: [包名].[类名].[执行函数名] 示例:创建函数时指定的initializer为com.huawei.Demo.my_initializer,那么FunctionGraph会去加载com.huawei包,Demo类中定义的my_initializer函数。 在函数服务中使用Java实现initializer接口,需要定义一个java函数作为initializer入口,一个最简单的initializer示例如下。 public void my_initializer(Context context) { RuntimeLogger log = context.getLogger(); log.log(String.format("ak:%s", context.getAccessKey())); } 函数名 my_initializer需要与实现initializer接口时的initializer字段相对应。 示例:实现initializer接口时指定的Initializer入口为com.huawei.Demo.my_initializer,那么FunctionGraph会去加载com.huawei包,Demo类中定义的my_initializer函数。 context参数 context参数中包含一些函数的运行时信息,例如:request id、临时AccessKey、function meta等。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格