云服务器内容精选

  • 更新函数镜像 在容器镜像函数的代码配置页面中,选择“代码”页签,右侧单击“部署新镜像”,在输入框中输入新镜像的URL,单击“确定”完成部署。镜像URL获取方式如下: 登录 容器镜像服务 控制台,左侧导航栏选择“我的镜像”。 选择“自有镜像”或“他人共享”页签,在镜像列表中单击镜像名称,进入详情页面。 选择“镜像版本”页签,在镜像版本列表中复制下载指令,指令中去掉“docker pull”,即为镜像URL。
  • 约束与限制 请参见配置函数的委托权限,创建一个包含“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响应报文。
  • Node.js语言 √表示支持,×表示不支持 语言版本 是否支持 版本号 开发指导 Node.js 6.10 √ 6.10.1 接口定义、有关SDK接口说明和函数开发指导请参见Node.js函数开发指南。 Node.js 8.10 √ 8.10.0 Node.js 10.16 √ 10.16.1 Node.js 12.13 √ 12.13.1 Node.js 14.18 √ 14.18.1 Node.js 16.17 √ 16.17.1 Node.js 18.15 √ 18.15.0
  • 配置代码源 您可以根据所选的运行时语言Runtime,参见创建程序包,选择适合的方式进行代码源部署,完成后单击“部署”。 以下图为例,运行时语言为“Node.js 10.16”,可以选择“在线编辑”、“Zip文件”、“OBS地址”三种方式进行代码源部署。 图2 部署代码源 当使用“OBS地址”方式进行代码源部署时,请确保创建函数选择的“区域”与创建OBS桶选择的“区域”一致。 代码若有修改,请修改完成后再次单击“部署”,重新部署代码。
  • 查看代码信息 查看代码属性 代码属性展示最新部署代码的大小及上次修改时间。 图3 查看代码属性 查看基本信息 函数创建完成后,各语言默认内存和执行超时时间如图4所示,请根据实际业务评估,若需修改“函数执行入口”、“内存(MB)”“执行超时时间(秒)”,可单击“编辑”,在常规设置中修改配置信息,具体请参见配置常规信息。 图4 编辑基本信息 函数一旦创建,便不能修改运行时语言。 表2 各语言默认基本信息 Runtime 默认基本信息 JAVA 内存(MB):512MB 函数执行入口:com.demo.TriggerTests.apigTest 执行超时时间(秒):15s Node.js 内存(MB):128 MB 函数执行入口:index.handler 执行超时时间(秒):3s Custom 内存(MB):128 MB 函数执行入口:bootstrap 执行超时时间(秒):3s PHP 内存(MB):128 MB 函数执行入口:index.handler 执行超时时间(秒):3s Python 内存(MB):128 MB 函数执行入口:index.handler 执行超时时间(秒):3s Go 1.x 内存(MB):128 MB 函数执行入口:handler 执行超时时间(秒):3s
  • 函数公共请求头 HTTP函数请求头默认携带如下字段。 表2 默认请求头 字段 描述 X-CFF-Request-Id 当前请求ID X-CFF-Memory 分配的内存 X-CFF-Timeout 函数超时时间 X-CFF-Func-Version 函数版本 X-CFF-Func-Name 函数名称 X-CFF-Project-Id ProjectID X-CFF-Package 函数组 X-CFF-Region 当前region
  • 概述 HTTP函数专注于优化 Web 服务场景,用户可以直接发送 HTTP 请求到 URL 触发函数执行,从而使用自己的Web服务。HTTP函数只允许创建APIG/APIC的触发器类型,其他触发器不支持。 HTTP函数当前不区分编程语言,函数执行入口必须在bootstrap文件中设置,用户直接写启动命令,端口统一开放成8000,绑定IP为127.0.0.1。 bootstrap文件是HTTP函数的启动文件,HTTP函数仅支持读取bootstrap 作为启动文件名称,其它名称将无法正常启动服务,bootstrap启动文件请参见bootstrap文件示例。 HTTP函数支持多种开发语言。 用户函数需要返回一个合法的http响应报文。 该章节均以Nodejs为样例,若需要使用其他语言,则更换语言路径即可,代码包路径无需更换。其他各语言路径请参见表1。 关于Go语言构建FunctionGraph HTTP函数,请参考使用Go构建FunctionGraph HTTP函数。 函数发起HTTP请求时,如果是内网访问,则请求IP地址是动态;如果是公网访问,则请求IP地址是固定。如需了解更多详情请咨询技术支持工程师。
  • 打包规范说明 函数除了支持在线编辑代码,还支持上传ZIP、JAR、引入OBS文件等方式上传代码,函数工程的打包规范说明如表1所示。 表1 函数工程打包规范 编程语言 JAR包 ZIP包 OBS文件 Node.js 不支持该方式 假如函数工程文件保存在“~/Code/”文件夹下,在打包的时候务必进入Code文件夹下选中所有工程文件进行打包,这样做的目的是:入口函数是程序执行的入口,确保解压后,入口函数所在的文件位于根目录。 如果函数工程引入了第三方依赖,可以将第三方依赖打成ZIP包,在函数代码界面设置外部依赖包;也可以将第三方依赖和函数工程文件一起打包。 将工程打成ZIP包,上传到OBS存储桶。 PHP 不支持该方式 假如函数工程文件保存在“~/Code/”文件夹下,在打包的时候务必进入Code文件夹下选中所有工程文件进行打包,这样做的目的是:入口函数是程序执行的入口,确保解压后,入口函数所在的文件位于根目录。 如果函数工程引入了第三方依赖,可以将第三方依赖打成ZIP包,在函数代码界面设置外部依赖包;也可以将第三方依赖和函数工程文件一起打包。 将工程打成ZIP包,上传到OBS存储桶。 Python 2.7 不支持该方式 假如函数工程文件保存在“~/Code/”文件夹下,在打包的时候务必进入Code文件夹下选中所有工程文件进行打包,这样做的目的是:入口函数是程序执行的入口,确保解压后,入口函数所在的文件位于根目录。 如果函数工程引入了第三方依赖,可以将第三方依赖打成ZIP包,在函数代码界面设置外部依赖包;也可以将第三方依赖和函数工程文件一起打包。 将工程打成ZIP包,上传到OBS存储桶。 Python 3.6 不支持该方式 假如函数工程文件保存在“~/Code/”文件夹下,在打包的时候务必进入Code文件夹下选中所有工程文件进行打包,这样做的目的是:入口函数是程序执行的入口,确保解压后,入口函数所在的文件位于根目录。 如果函数工程引入了第三方依赖,可以将第三方依赖打成ZIP包,在函数代码界面设置外部依赖包;也可以将第三方依赖和函数工程文件一起打包。 将工程打成ZIP包,上传到OBS存储桶。 Java 8 如果函数没有引用第三方件,可以直接将函数工程编译成Jar包。 如果函数引用第三方件,将函数工程编译成Jar包后,将所有依赖三方件和函数jar包打成ZIP包。 将工程打成ZIP包,上传到OBS存储桶。 Go 1.x 不支持该方式 必须在编译之后打zip包,编译后的二进制文件必须与执行函数入口保持一致,例如二进制名称为Handler,则执行入口为Handler。 将工程打成ZIP包,上传到OBS存储桶。 C# 不支持该方式 必须在编译之后打zip包,必须包含“工程名.deps.json”,“工程名.dll”,“工程名.runtimeconfig.json”,“工程名.pdb”和“HC.Serverless.Function.Common.dll”文件。 将工程打成ZIP包,直接上传到OBS存储桶。 定制运行时 不支持该方式 打zip包,必须包含“bootstrap”可执行引导文件。 将工程打成ZIP包,直接上传到OBS存储桶。
  • ZIP工程包示例 Nods.js工程ZIP包目录示例 Example.zip 示例工程包 |--- lib 业务文件目录 |--- node_modules npm三方件目录 |--- index.js 入口js文件(必选) |--- package.json npm项目管理文件 PHP工程ZIP包目录示例 Example.zip 示例工程包 |--- ext 扩展库目录 |--- pear PHP扩展与应用仓库 |--- index.php 入口PHP文件 Python工程ZIP包目录示例 Example.zip 示例工程包 |--- com 业务文件目录 |--- PLI 第三方依赖PLI目录 |--- index.py 入口py文件(必选) |--- watermark.py 实现打水印功能的py文件 |--- watermark.png 水印图片 Java工程ZIP包目录示例 Example.zip 示例工程包 |--- obstest.jar 业务功能JAR包 |--- esdk-obs-java-3.20.2.jar 第三方依赖JAR包 |--- jackson-core-2.10.0.jar 第三方依赖JAR包 |--- jackson-databind-2.10.0.jar 第三方依赖JAR包 |--- log4j-api-2.12.0.jar 第三方依赖JAR包 |--- log4j-core-2.12.0.jar 第三方依赖JAR包 |--- okhttp-3.14.2.jar 第三方依赖JAR包 |--- okio-1.17.2.jar 第三方依赖JAR包 Go工程ZIP包目录示例 Example.zip 示例工程包 |--- testplugin.so 业务功能包 C#工程ZIP包目录示例 Example.zip 示例工程包 |--- fssExampleCsharp2.0.deps.json 工程编译产生文件 |--- fssExampleCsharp2.0.dll 工程编译产生文件 |--- fssExampleCsharp2.0.pdb 工程编译产生文件 |--- fssExampleCsharp2.0.runtimeconfig.json 工程编译产生文件 |--- Handler 帮助文件,可直接使用 |--- HC.Serverless.Function.Common.dll 函数工作流 提供的dll 定制运行时 Example.zip 示例工程包 |--- bootstrap 可执行引导文件