- 最新动态
- 功能总览
- 产品介绍
- 计费说明
- 快速入门
- 用户指南
-
最佳实践
- FunctionGraph最佳实践汇总
-
数据处理类实践
- 使用FunctionGraph函数对OBS中的图片进行压缩
- 使用FunctionGraph函数为OBS中的图片打水印
- 使用FunctionGraph函数对DIS数据进行格式转换并存储到CloudTable
- 使用FunctionGraph函数实现通过API方式上传文件
- 使用FunctionGraph函数对IoTDA中的设备坐标数据进行转换
- 使用FunctionGraph函数对OBS中的文件进行加解密
- 使用FunctionGraph函数识别LTS中的异常业务日志并存储到OBS
- 使用FunctionGraph函数对LTS中的日志进行实时过滤
- 使用FunctionGraph函数流对OBS中的图片进行旋转
- 使用FunctionGraph函数流对图片进行压缩和打水印
- 功能应用类实践
- 函数构建类实践
- 开发指南
- API参考
- SDK参考
- 场景代码示例
-
常见问题
-
产品咨询
- 使用FunctionGraph是否需要开通计算、存储、网络等服务?
- 使用FunctionGraph开发程序之后是否需要部署?
- FunctionGraph为函数分配的磁盘空间有多少?
- 是否支持在函数中启动TCP的监听端口,通过EIP接收外部发送过来的TCP请求?
- 函数发起HTTP请求的源地址如何获取?
- FunctionGraph是否支持对上传的zip文件进行反编译?
- FunctionGraph的函数是否支持功能扩展?
- FunctionGraph中的代码是如何隔离的?
- 函数常规信息中的“应用”如何理解?
- 用户需要为函数的冷启动时间付费吗?
- 函数计费中的调用次数,是某一账号下在不同region的所有函数的调用次数总和吗?
- Python语言的函数从V1版本迁移到V2版本时需注意哪些兼容性问题?
- FunctionGraph函数支持哪些编程语言?
- 创建函数
-
配置函数
- 能否在函数环境变量中存储敏感信息?
- FunctionGraph的函数如何读写上传的文件?
- 为函数挂载文件系统时,报“failed to mount exist system path”
- FunctionGraph如何实现域名解析?
- FunctionGraph如何通过域名访问专享版APIG中注册的接口?
- FunctionGraph函数通过域名访问APIG中注册的接口时,报域名无法解析?
- 使用定制运行时语言的函数能操作哪些目录?
- FunctionGraph的函数支持哪些中文字体?
- 能否在函数代码中使用线程和进程?
- 函数如何访问MySQL数据库?
- 函数无法通过VPC连接对应的Redis?
- 如何读取函数的请求头?
- Python语言的函数中,中文注释报乱码错误
-
调用函数
- FunctionGraph的函数执行需要多长时间?
- FunctionGraph的函数执行包含了哪些过程?
- FunctionGraph函数长时间不执行时,相关的实例会如何处理?
- 如何获取函数运行过程中的内存使用量信息?
- 为什么首次调用函数时速度会比较慢?
- 为什么函数实际使用内存大于预估内存,甚至触发内存溢出OOM?
- 函数执行失败返回“runtime memory limit exceeded”时,如何查看内存占用大小?
- 自定义镜像函数执行失败报“CrashLoopBackOff”
- 同步调用函数时,未收到调用响应的可能原因?
- 函数中os.system("command &")命令的执行日志未采集,应如何处理?
- 函数执行超时的可能原因有哪些?
- 使用APIG触发器调用一个返回String的FunctionGraph函数时,报500错误
- Python2.7在执行reload(sys)后无法通过print打印日志
- 运行函数时报错error while loading shared libraries时如何处理?
- 配置触发器
- 配置依赖包
-
产品咨询
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
使用容器镜像创建函数
FunctionGraph支持加载容器镜像中的函数并运行,与直接上传代码的方式相比,用户可以使用自定义的代码包,不仅灵活,也简化了用户的迁移成本。
约束与限制
- 请参见配置函数的委托权限,创建一个包含“SWR Admin容器镜像服务(SWR)管理员”权限的委托,因为用户镜像储存在SWR服务中,只有拥有“SWR Admin”权限,才能调用与获取,拉取镜像。
- 自定义容器镜像需包含HTTP Server,监听端口为8000。
- HTTP函数只允许创建APIG/APIC的触发器类型,其他触发器不支持。
- 事件函数需创建一个HTTP Server并实现Method为POST和Path为/invoke的函数执行入口,可实现Method为POST和Path为/init的函数初始化入口。
- 通过APIG服务调用函数服务时,isBase64Encoded的值默认为true,表示APIG传递给FunctionGraph的请求体body已经进行Base64编码,需要先对body内容Base64解码后再处理。
- 函数必须按以下结构返回字符串。
{ "isBase64Encoded": true|false, "statusCode": httpStatusCode, "headers": {"headerName":"headerValue",...}, "body": "..." }
- Command、Args、Working dir三个参数之和不能超过5120。
- 初次执行时需要从SWR中拉取镜像,且冷启动时需要启动容器,所以自定义镜像冷启动比较慢。后续每次冷启动,如果节点上没有镜像,都需要从SWR中拉取。
- 镜像类型支持公开和私有,具体详情请参考编辑镜像属性。
- 自定义容器镜像开放端口限定为8000。
- 可支持的镜像包最大为10G,当镜像包过大时可以采取一些方式缩容,比如在线题库场景中,可以把原来加载在容器中的题库数据通过外部文件系统挂载盘方式挂载到容器中。
- FunctionGraph通过LTS日志采集容器输出到控制台的所有日志,可以通过标准输出或者开源日志框架重定向到控制台的方式打印业务信息。打印的内容建议包括系统时间、组件名称、代码行、关键数据等来方便定位。
- oom错误时,内存占用大小可以在函数执行结果中查看。
- 用户函数需要返回一个合法的http响应报文。
创建函数
- 登录函数工作流控制台,在左侧的导航栏选择“函数 > 函数列表”。
- 单击右上方的“创建函数”,进入“创建函数”页面。
- 选择“容器镜像”,配置信息参见表1。
图1 创建容器镜像
表1 容器镜像配置信息 参数
说明
函数类型
支持以下两种类型:
- 事件函数:通常为JSON格式的请求,事件函数不受触发器类型的限制,当前FunctionGraph支持的所有类型触发器均可用于触发事件函数。
- HTTP函数:用户可以直接发送HTTP请求到URL触发函数执行。
区域
选择要部署代码的区域。
不同区域的资源之间内网不互通,请就近选择靠近您业务的区域,可以降低网络时延、提高访问速度。
项目
默认与选择的区域一致。
函数名称
函数名称,命名规则如下:
- 可包含字母、数字、下划线和中划线,长度不超过60个字符。
- 以大/小写字母开头,以字母或数字结尾。
企业项目
默认“default”,支持用户选择已创建的企业项目。企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理。
如果您没有开通企业管理服务,将无法看到企业项目选项。开通方法请参见如何开通企业项目。
权限
默认勾选“使用现有委托”。
默认情况下,FunctionGraph将创建一个具有基础权限的执行权限,之后添加触发器时,您可以再对此默认角色进行自定义。
现有委托
选择包含SWR Admin权限的委托,如需创建委托,请参见创建委托。
委托权限策略
展示您选择委托中的权限策略,您可以在IAM控制台增加或者删除策略,单击“查看策略”可查看详情。
容器镜像
输入镜像URL,即用于函数的容器镜像的位置。您可以单击“查看镜像”,查看自有镜像及共享镜像。同时,也支持单击“选择镜像”功能,用户可在镜像列表中选择公开或私有镜像,选择成功后会自动填充镜像URL。如何制作镜像,请参见制作镜像。
swr中的镜像名,例如swr.region_id.myhuaweicloud.com/my_group/my_image:latest。
容器镜像覆盖
此处如果配置,则会覆盖dockerfile文件中的镜像配置,如果不配置则使用镜像默认配置。
- CMD:容器的启动命令,例如"/bin/sh"。该参数为可选参数,不填写,则默认使用镜像中的Entrypoint/CMD。字符串数组,以逗号分开。
- Args:容器的启动参数,例如"-args,value1"。该参数为可选参数,不填写,则默认使用镜像中的CMD。字符串数组,以逗号分开。
- Working Dir:容器的工作目录,当前不支持创建和修改文件夹路径,只能为“/”。该参数为可选参数,不填写,则默认使用 "/"。
- 用户ID:镜像运行时的用户ID,若不填写,默认为1003。
- 用户组ID:镜像运行时的用户组ID,若不填写,默认为1003。
高级设置
支持添加日志标签,详情请参见日志标签。函数执行时,可以按照自定义标签配置上报标签到云日志服务(LTS),用户可以通过标签对日志进行过滤筛选。(最多添加10个标签)
说明:
当前仅支持华北-北京一、华东-上海一、华东-上海二、华南-广州、中东-利雅得、拉美-墨西哥城二。
- 配置完成后单击“创建函数”,页面跳转至代码配置页面,各配置项操作请参见配置函数。
更新函数镜像
- 登录容器镜像服务控制台,左侧导航栏选择“我的镜像”。
- 选择“自有镜像”或“他人共享”页签,在镜像列表中单击镜像名称,进入详情页面。
- 选择“镜像版本”页签,在镜像版本列表中复制下载指令,指令中去掉“docker pull”,即为镜像URL。