准备工作
下载函数计算命令行工具
fcli,执行fcli shell进入交互模式(
fcli工具的简明介绍)。如果您是第一次使用fcli,请按提示配置endpoint,access key id/secret等信息。
- 获取endpoint,请参考服务入口文档。
- 获取access key id/secret,请参考相关文档。
[font=PingFangSC, "]注意:这边建议这三个快速入门的示例一直使用同一个的endpoint,不然可能会有一些access denied问题。
[font=PingFangSC, "]
创建服务
在fcli shell中执行mks demo,创建名为“demo”的服务。执行cd demo进入服务
demo 内。
编写代码
在当前目录下创建名为 code 的目录,在 code 目录下创建
hello_world.js (或
hello_world.py , 后面python版本示例都是同名的规则,之后不再赘述)文件,实现名为
handler 的 nodejs 事件处理函数。nodejspython
- [backcolor=transparent]'use strict'[backcolor=transparent];
- [backcolor=transparent]module[backcolor=transparent].[backcolor=transparent]exports[backcolor=transparent].[backcolor=transparent]handler [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]function[backcolor=transparent]([backcolor=transparent]event[backcolor=transparent],[backcolor=transparent] context[backcolor=transparent],[backcolor=transparent] callback[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] console[backcolor=transparent].[backcolor=transparent]log[backcolor=transparent]([backcolor=transparent]'hello world'[backcolor=transparent]);
- [backcolor=transparent] callback[backcolor=transparent]([backcolor=transparent]null[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]'hello world'[backcolor=transparent]);
- [backcolor=transparent] [backcolor=transparent]};
- [backcolor=transparent]# -*- coding: utf-8 -*-
- [backcolor=transparent]def[backcolor=transparent] handler[backcolor=transparent]([backcolor=transparent]event[backcolor=transparent],[backcolor=transparent] context[backcolor=transparent]):
- [backcolor=transparent] [backcolor=transparent]print[backcolor=transparent] [backcolor=transparent]"hello world"
- [backcolor=transparent] [backcolor=transparent]return[backcolor=transparent] [backcolor=transparent]'hello world'
如上例所示,nodejs 的函数签名为“function(event, context, callback)”。用户通过调用“callback”返回结果。请参考
nodejs 编程指南,获取更多细节, 至于python 版本的更多细节,请参考
python 编程指南
创建函数
在fcli shell中执行mkf world -h hello_world.handler -d code -t nodejs6,在服务
demo 中创建名为
world 的函数。当完成这一步后,实际上您已经实现了一个高可用且弹性伸缩的 web server。
注:python 版本执行的命令是mkf world -h hello_world.handler -d code -t python2.7,后面python版本示例都是runtime都是python2.7,不再赘述。
参数详解:
handler 格式为“文件名.函数名”。例如 hello_world.handler 指定了函数的调用入口为 hello_world.js 文件中的 handler 函数
-d code告诉 fcli 将当前目录下名为 code 的目录下的文件作为代码文件。fcli 将为您打包代码并上传到函数计算服务。代码打包要求您的机器上已安装 docker。docker 的具体安装步骤,请参阅相关文档。国内用户访问 docker 官方镜像库速度较慢,建议您使用阿里云镜像加速服务,具体设置请参阅相关文档。在 linux 下使用 docker,要求有 root 权限。所以您需要使用 sudo fcli shell 的方式启动命令行工具;或者您可以参照相关文档设置,以非 root 用户管理 docker。此外,您也可以将代码存放在 OSS 中,指定 OSS 路径并授予函数计算访问该 OSS 位置的权限。
-t nodejs6指定了函数运行时为nodejs。目前我们还支持python和java(java的使用请参考 java_编程指南 ),未来我们会支持更多的语言,敬请关注
您还可以通过-m参数指定函数运行的memory资源规格,默认为128MB
更多参数请参考:mkf --help
调用函数
在fcli shell中执行invk world,您应当看到输出结果为 hello world。
完整示例
- [backcolor=transparent]songluo@demo $ ls
- [backcolor=transparent]code fcli
- [backcolor=transparent]songluo@demo $ cat code[backcolor=transparent]/[backcolor=transparent]hello_world[backcolor=transparent].[backcolor=transparent]js
- [backcolor=transparent]'use strict'[backcolor=transparent];
- [backcolor=transparent]module[backcolor=transparent].[backcolor=transparent]exports[backcolor=transparent].[backcolor=transparent]handler [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]function[backcolor=transparent]([backcolor=transparent]event[backcolor=transparent],[backcolor=transparent] context[backcolor=transparent],[backcolor=transparent] callback[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] console[backcolor=transparent].[backcolor=transparent]log[backcolor=transparent]([backcolor=transparent]'hello world'[backcolor=transparent]);
- [backcolor=transparent] callback[backcolor=transparent]([backcolor=transparent]null[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]'hello world'[backcolor=transparent]);
- [backcolor=transparent] [backcolor=transparent]};
- [backcolor=transparent]songluo@demo $ [backcolor=transparent]./[backcolor=transparent]fcli shell
- [backcolor=transparent]Welcome[backcolor=transparent] to the [backcolor=transparent]function[backcolor=transparent] compute world[backcolor=transparent].[backcolor=transparent] [backcolor=transparent]Have[backcolor=transparent] fun[backcolor=transparent]!
- [backcolor=transparent]>>>[backcolor=transparent] mks demo
- [backcolor=transparent]>>>[backcolor=transparent] cd demo
- [backcolor=transparent]>>>[backcolor=transparent] mkf world [backcolor=transparent]-[backcolor=transparent]t nodejs6 [backcolor=transparent]-[backcolor=transparent]h hello_world[backcolor=transparent].[backcolor=transparent]handler [backcolor=transparent]-[backcolor=transparent]d code
- [backcolor=transparent]>>>[backcolor=transparent] invk world
- [backcolor=transparent]hello world
tips: 这边还有完整的shell操作视频(
hello_world),视频里面的命令是可以直接复制的
控制台查看
这边也提供了可视化工具,更加直观查看已经创建的service和function,可以在阿里云官网登录控制台-> 函数服务管理控制台,这边在服务列表中(对应endpoint的区域,假设是华东2)可以看到服务demo,点开demo,里面有创建的world函数。