上云无忧 > 文档中心 > 百度智能云函数计算 CFC Lua 示例
函数计算CFC
百度智能云函数计算 CFC Lua 示例

文档简介:
CFC 支持 Lua 编程语言,Lua 函数的运行环境是 Lua5.3,本文主要介绍使用 Lua 函数的基本方法。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

CFC 支持 Lua 编程语言,Lua 函数的运行环境是 Lua5.3,本文主要介绍使用 Lua 函数的基本方法。

函数入口

使用 Lua 运行时,您需要定义一个 Lua 代码编写的函数作为执行入口。以空白函数为例,在 CFC 的页面上创建一个运行时为 Lua5.3 的空白函数后。在"函数代码"页,您可看到如下函数代码,这就是一个最简单的 Lua 函数。

function handler(event, context) return "hello world" end

如上所示,这个 Lua 代码编写的函数名为 handler,默认情况下 CFC 会将代码存储在一个名为 index.lua 的文件中。CFC 用“不带类型后缀的文件名.函数名”的形式表示 Lua 函数的执行入口,在本例中就是 index.handler。

在“函数代码”页,“处理程序”即表示函数入口,您可以看到,新创建的函数已为您填入正确的入口。若您修改了函数代码和入口函数名,请相应地修改“处理程序”的值,否则函数将无法执行。

event 参数

event 参数是函数的输入参数,也是您调用函数时传入的数据,其数据类型是 table。

context 参数

context 参数是 CFC 向函数提供的运行时信息,数据类型是 table。其包含了一些环境参数,比如 functionBrn,或调用函数的客户端传入的 context 参数 clientContext。

从本地或 BOS 上传 ZIP 包

当您从本地或者 BOS 上传一个函数 ZIP 包时,请注意 ZIP 包的层级目录以及函数入口。index.lua 文件应放在 ZIP 包的根目录,而不是根目录下的某个文件夹里。若您修改了文件名称,那么“处理程序”也要做对应的修改,否则 CFC 将无法找到函数入口。示例如下:

$ unzip -l luafunc.zip
Archive:  luafunc.zip
  Length      Date    Time    Name
---------  ---------- -----   ---- 117 12-27-2019 09:52   index.lua 0 12-27-2019 10:11  
 mylib/ 361 12-27-2019 10:11   mylib/utils.lua
---------                     ------- 478 3 files

依赖管理

若您的 Lua 函数需要一些依赖文件,您需要把依赖与源文件一起打包上传,函数才能执行。

对于您自己实现的依赖库,把依赖文件或文件夹与 index.lua 放置在同级目录,然后一起打包上传即可。

Luarocks 是一个常用的 Lua 包管理工具,CFC 支持以 Luarocks 的默认组织路径去查找 Lua5.3 的依赖文件。因此您可以在本地使用 Luarocks 安装依赖后,将源文件与依赖直接打包上传,而无需更改依赖文件的路径。示例如下:

$ tree . ├── index.lua
└── mylib
    └── utils.lua

$ luarocks install --tree `pwd` lpeg # 在当前路径安装依赖 Installing https://luarocks.org/lpeg-1.0.2-1.src.rock ...

$ tree . ├── index.lua
├── lib
│   ├── lua
│   │   └── 5.3 │   │       └── lpeg.so
│   └── luarocks
│       └── rocks-5.3
│           ├── lpeg
│           │   └── 1.0.2-1
│           │       ├── lpeg-1.0.2-1.rockspec
│           │       └── rock_manifest
│           └── manifest
├── luafunc.zip
├── mylib
│   └── utils.lua
└── share
    └── lua
        └── 5.3 └── re.lua

$ zip -r luafunc.zip * # 将此目录下所有文件打包

如上所示,自己实现的依赖位于 mylib/ 中,Luarocks 安装的依赖分别在 lib/lua/5.3/ 和 share/lua/5.3/ 中。把 luafunc.zip 上传到 CFC 后,您可以在 index.lua 中可以这样引用依赖:

require("re") require("mylib/utils")

请注意,Luarocks 安装的一些依赖包中有 .so 文件,您在 Windows 或 MacOS 环境中安装的依赖,可能无法在函数的 Linux 执行环境中直接使用。为了避免此类问题,推荐您使用CFC 本地开发工具 BSAM 在本地调试代码、安装依赖,避免本地与云端不兼容问题。

相似文档
  • 以下为一个最基本的hello world函数入口示例: 在创建CFC云函数时,需要指定执行方法。 普通方式:handler需要与创建函数时的 "handler" 字段相对应。例如,创建函数时指定的 "handler" 为 index.handler,函数计算则会加载 index.php 文件中定义的 handler 函数。
  • 目前CFC支持的Node.js开发语言包括如下版本: Node.js 12.2 Node.js 10.15 Node.js 8.5(已下线,目前存量Node.js 8.5函数仍可运行,但无法创建该运行时的新CFC函数) 函数代码 一个简单的Node.js函数示例代码如下所示: exports.handler = (event, context, callback) => { callback(null, "Hello world!"); };
  • BCE SAM是用来定义百度函数计算CFC无服务器应用架构的模型,为本地开发工具bce-sam-cli提供指引。BCE SAM定义了一组对象,这些对象可以包含在模板定义文件中,以便轻松地描述CFC函数。
  • BSAM CLI是一个基于BCE SAM规范的命令行工具,它提供了本地开发环境,帮助您在把函数上传到百度智能云CFC之前,在本地进行函数的开发、分析和执行。
  • “部署程序包”是 CFC 运行您的函数时需要的 zip 压缩包,在创建函数时需要指定部署程序包。您可以在 CFC 的控制台编写代码或者自行创建 zip 程序压缩包。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部