全部产品

函数增删改查

更新时间:2018-11-01 10:12:39

函数是在服务下的,同一个服务下可以有多个函数,这些函数共享服务配置的日志资源和角色信息,但彼此相互独立,互不影响。有关函数计算的函数的概念请参考文章 函数介绍

本文介绍使用 控制台命令行工具 fcli 对函数的操作:函数的增删改查。

使用控制台对函数增删改查

创建函数

下面详细介绍使用控制台创建函数的步骤。

  • 选择一个服务。
  • 在该服务下创建函数。
  • 选择一个模板,函数计算提供丰富的函数模板方便您快速构建应用,参考文章 函数模板使用,正常情况下,选择空白模板即可。
  • 如果函数需要创建触发器,可以在创建函数时创建,也可以先不创建触发器,在函数创建好之后创建触发器,参考 创建触发器
  • 设置函数所在服务的名称、函数名称、运行环境、函数参数。
  • 【可选】设置 环境变量initializer 功能
  • 【可选】如果函数执行需要所在服务的角色中所没有的权限时,可以在这里为该角色授权。权限相关问题请参考文章 权限简介
  • 信息核对,核对确定信息无误就可以创建函数了。

newFunc1newFunc2newFunc3newFunc4newFunc5newFunc6newFunc7newFunc8

更新函数

如图在函数详情页面,通过函数属性可以查看函数的具体信息。更新函数

删除函数

删除函数前要确保函数下没有触发器

删除函数

使用 fcli 对函数增删改查

创建函数

mkf 创建函数

  • -b —code-bucket string 代码所在的 OSS bucket。
  • -o —code-object string 指定了代码在 bucket 中的 object key。
  • -d —code-dir string 代码所在的目录。
  • -f —code-file string 压缩的代码文件。
  • -h —handler string 设置函数 handler,handler 格式为“文件名.函数名”。例如 hello_world.handler 指定了函数的调用入口为 hello_world.js 文件中的 handler 函数。
  • -m —memory int32 设置函数执行的内存大小。
  • -t —runtime string 指定语言类型。
  • -i —initializer string 设置 initializer 入口,initializer 入口格式为“文件名.initializer 名”。例如 hello_world.initializer 指定了 initializer 的调用入口为 hello_world.js 文件中的 initializer 函数。
  • -e —initializationTimeout int32 initializer 超时时间。
  1. // 在相应service目录下
  2. // 代码存储在oss上,-t指定runtime,-h指定函数入口,-b指定代码所在的oss bucket,-o 指定了代码在bucket中的object key
  3. >>> mkf myFunction -t nodejs6 -h myFunction.handler -b ossBucketName -o objectKey
  4. // 代码存储在oss上且包含 initializer,-t指定runtime,-h指定函数入口,-i指定 initializer 入口,-e指定 initializer 超时时间,-b指定代码所在的oss bucket,-o 指定了代码在bucket中的object key
  5. >>> mkf myFunction -t nodejs6 -h myFunction.handler -i myFunction.initializer -e 60 -b ossBucketName -o objectKey
  6. // 代码存储在本地,-d 指定了代码所在目录,-m 设置函数执行的内存大小
  7. >>> mkf myFunction -t nodejs6 -h myFunction.handler -d codeDir/myFunction -m 512
  8. // 代码在本地的 code.zip 中
  9. >>> mkf myFunction -h myFunction.handler -f code.zip -t nodejs6

更新函数

upf 更新函数,参数与mkf的参数完全相同。

  1. // 在相应service目录下
  2. // 代码存储在 OSS 上,-t 指定 runtime,-b 指定代码所在的 oss bucket,-o 指定了代码在 bucket 中的 object key
  3. >>> upf myFunction -t nodejs6 -h myFunction.handler -b ossBucketName -o objectKey
  4. // 代码存储在本地,-d 指定了代码所在目录,-m 设置函数执行的内存大小
  5. >>> upf myFunction -t nodejs6 -h myFunction.handler -d codeDir/myFunction -m 512
  6. //代码在本地的 code.zip 中
  7. >>> upf myFunction -h myFunction.handler -f code.zip -t nodejs6

针对 initializer 的更新,可以从有更新到无,亦可以从无更新到有。

  1. // 代码存储在 OSS 上且包含 initializer 函数,-t 指定 runtime,-i指定 initializer 入口,-e指定 initializer 超时时间,-b 指定代码所在的 oss bucket,-o 指定了代码在 bucket 中的 object key
  2. // 将initializer 从 myFunction.initializer 更新至 myFunction.newInitializer
  3. >>> upf myFunction -t nodejs6 -i myFunction.newInitializer -e 30 -b ossBucketName -o objectKey
  4. // 将initializer 从 myFunction.newInitializer 更新至空,关闭函数 initializer 功能。
  5. >>> upf myFunction -t nodejs6 -i "" -b ossBucketName -o objectKey
  6. // 将initializer 从空更新至 myFunction.newInitializer
  7. >>> upf myFunction -t nodejs6 -i myFunction.newInitializer -e 30 -b ossBucketName -o objectKey

查看函数

在相应 service 下,通过 ls 即可列出该服务下的所有函数。

触发函数执行

invk 触发函数执行

  • -e —encode 对函数的返回值进行 base64 编码。
  • -f —event-file string 从文件中读取触发事件内容。
  • -s —event-str string 从字符串中读取触发事件内容。
  • -o —output-file string 将返回结果写入文件的文件名称。
  • -t —type string 触发类型,Sync/Async 同步触发或者异步触发函数,默认是 Sync。
  1. // 如果不需要输入参数,不需要触发事件,直接 invoke 就可以
  2. >>> invk myFunction
  3. //对函数的返回值进行 base64 编码
  4. >>> invk myFunction -e
  5. // 从字符串中读取触发事件内容
  6. >>> invk myFunction -s 'hello,world'
  7. // 从文件中读取触发事件内容
  8. >>> invk myFunction -f event.json
  9. //将返回结果写入 result.txt 文件中
  10. >>> invk myFunction -o code/result.txt
  11. // 设置触发类型为异步触发
  12. >>> invk myFunction -t Async

删除函数

rm 可以删除函数,删除函数前确保该函数下没有触发器。