开发者社区> 问答> 正文

函数计算的应用示例1 - hello world



准备工作


下载函数计算命令行工具 fcli,执行fcli shell进入交互模式( fcli工具的简明介绍)。如果您是第一次使用fcli,请按提示配置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

  1. [backcolor=transparent]'use strict'[backcolor=transparent];
  2. [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]{
  3. [backcolor=transparent]    console[backcolor=transparent].[backcolor=transparent]log[backcolor=transparent]([backcolor=transparent]'hello world'[backcolor=transparent]);
  4. [backcolor=transparent]    callback[backcolor=transparent]([backcolor=transparent]null[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]'hello world'[backcolor=transparent]);
  5. [backcolor=transparent] [backcolor=transparent]};

  1. [backcolor=transparent]# -*- coding: utf-8 -*-
  2. [backcolor=transparent]def[backcolor=transparent] handler[backcolor=transparent]([backcolor=transparent]event[backcolor=transparent],[backcolor=transparent] context[backcolor=transparent]):
  3. [backcolor=transparent]    [backcolor=transparent]print[backcolor=transparent] [backcolor=transparent]"hello world"
  4. [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,不再赘述。
参数详解:

  1. handler 格式为“文件名.函数名”。例如 hello_world.handler 指定了函数的调用入口为 hello_world.js 文件中的 handler 函数

  2. -d code告诉 fcli 将当前目录下名为 code 的目录下的文件作为代码文件。fcli 将为您打包代码并上传到函数计算服务。代码打包要求您的机器上已安装 docker。docker 的具体安装步骤,请参阅相关文档。国内用户访问 docker 官方镜像库速度较慢,建议您使用阿里云镜像加速服务,具体设置请参阅相关文档。在 linux 下使用 docker,要求有 root 权限。所以您需要使用 sudo fcli shell 的方式启动命令行工具;或者您可以参照相关文档设置,以非 root 用户管理 docker。此外,您也可以将代码存放在 OSS 中,指定 OSS 路径并授予函数计算访问该 OSS 位置的权限。

  3. -t nodejs6指定了函数运行时为nodejs。目前我们还支持python和java(java的使用请参考 java_编程指南 ),未来我们会支持更多的语言,敬请关注

  4. 您还可以通过-m参数指定函数运行的memory资源规格,默认为128MB

  5. 更多参数请参考:mkf --help


调用函数


在fcli shell中执行invk world,您应当看到输出结果为 hello world。

完整示例

  1. [backcolor=transparent]songluo@demo $ ls
  2. [backcolor=transparent]code fcli
  3. [backcolor=transparent]songluo@demo $ cat code[backcolor=transparent]/[backcolor=transparent]hello_world[backcolor=transparent].[backcolor=transparent]js
  4. [backcolor=transparent]'use strict'[backcolor=transparent];
  5. [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]{
  6. [backcolor=transparent]    console[backcolor=transparent].[backcolor=transparent]log[backcolor=transparent]([backcolor=transparent]'hello world'[backcolor=transparent]);
  7. [backcolor=transparent]    callback[backcolor=transparent]([backcolor=transparent]null[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]'hello world'[backcolor=transparent]);
  8. [backcolor=transparent] [backcolor=transparent]};
  9. [backcolor=transparent]songluo@demo $ [backcolor=transparent]./[backcolor=transparent]fcli shell
  10. [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]!
  11. [backcolor=transparent]>>>[backcolor=transparent] mks demo
  12. [backcolor=transparent]>>>[backcolor=transparent] cd demo
  13. [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
  14. [backcolor=transparent]>>>[backcolor=transparent] invk world
  15. [backcolor=transparent]hello world

tips: 这边还有完整的shell操作视频( hello_world),视频里面的命令是可以直接复制的


控制台查看


这边也提供了可视化工具,更加直观查看已经创建的service和function,可以在阿里云官网登录控制台-> 函数服务管理控制台,这边在服务列表中(对应endpoint的区域,假设是华东2)可以看到服务demo,点开demo,里面有创建的world函数。

展开
收起
boxti 2017-10-19 15:55:10 1964 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
Hologres Serverless之路:揭秘弹性计算组 立即下载
Serverless开发平台: 让研发效能再提升 立即下载
Serverless 引领云上研发新范式 立即下载