前言
fcli 是阿里云函数计算的命令行工具,官方文档,功能一览:
准备
1、下载:github连接
fcli-v1.0.2-darwin-amd64.zip
fcli-v1.0.2-linux-amd64.zip
fcli-v1.0.2-win-386.zip
2、配置信息
初次使用可能会让输入各种参数,如果之前在fun里面配置过,这里就可以忽略。
用户可以通过 ~/.fcli/config.yaml 进行查看和更改
3、进入命名行
./fcli shell
通用操作
cd serviceName //进入相应serviceName服务的目录下
ls //在service目录下ls,列出当前serviceName的服务下的所有函数的名称
pwd
info funName // 查看所有信息
rm funName
clear 清屏
exit 退出fcli
Service 相关命令
1. mks 创建服务
-d
—description string 描述信息。-p
—log-project string 指定服务对应的日志项目log project。-l
—log-store string 指定服务对应的日志项目的log store。-r
—role string 指定服务对应的角色。
>>> mks myService //新建一个服务,不带任何高级配置内容
>>> mks myService -d 'my description' \
-p my-log-project \
-l my-log-store \
-r acs:ram::myID:role/myRoleName
//新建服务,其中描述信息为my description,日志项目为my-log-project,日志存储my-log-store,角色为myRoleName
2. ups 更新服务
- 参数与 mks 的参数完全相同
-d
—description string 描述信息-p
—log-project string 指定服务对应的日志项目log project-l
—log-store string 指定服务对应的日志项目的log store-r
—role string 指定服务对应的角色
>>> ups myService \
-d 'my description' \
-p my-log-project \
-l my-log-store \
-r acs:ram::myID:role/myRoleName
//更新服务,其中描述信息为my description,日志项目为my-log-project,日志存储my-log-store,角色为myRoleName
Function 相关命令
1. 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 函数。-e
--initializationTimeout
int32
初始化函数超时时间(默认 30s)-i
--initializer
string
设置初始化函数-m
--memory
int32
设置函数执行的内存大小。-t
--runtime
string
指定语言类型。--timeout
int32
函数超时时间(默认 30s)
// 在相应service目录下
>>> mkf myFunction -t nodejs6 -h myFunction.handler -b ossBucketName -o objectKey //代码存储在oss上,-t指定runtime,-h指定函数入口,-b指定代码所在的oss bucket,-o 指定了代码在bucket中的object key
>>> mkf myFunction -t nodejs6 -h myFunction.handler -d codeDir/myFunction -m 512 //代码存储在本地,-d指定了代码所在目录,-m设置函数执行的内存大小
>>> mkf myFunction -h myFunction.handler -f code.zip -t nodejs6 //代码在本地的code.zip中
2. upf 更新函数
- 参数与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 指定语言类型
// 在相应service目录下
>>> upf myFunction -t nodejs6 -h myFunction.handler -b ossBucketName -o objectKey //代码存储在oss上,-t指定runtime,-b指定代码所在的oss bucket,-o 指定了代码在bucket中的object key
>>> upf myFunction -t nodejs6 -h myFunction.handler -d codeDir/myFunction -m 512 //代码存储在本地,-d指定了代码所在目录,-m设置函数执行的内存大小
>>> upf myFunction -h myFunction.handler -f code.zip -t nodejs6 //代码在本地的code.zip中
3. invk 触发函数执行
-e
—encode 对函数的返回值进行 base64 编码。-f
—event-file string 从文件中读取触发事件内容。-s
—event-str string 从字符串中读取触发事件内容。-o
—output-file string 将返回结果写入文件的文件名称。-t
—type string 触发类型,Sync/Async 同步触发或者异步触发函数,默认是 Sync。
>>> invk myFunction //如果不需要输入参数,不需要触发事件的话,直接invoke就可以
>>> invk myFunction -e //对函数的返回值进行base64编码
>>> invk myFunction -s 'hello,world'//从字符串中读取触发事件内容
>>> invk myFunction -f event.json //从文件中读取触发事件内容
>>> invk myFunction -o code/result.txt //将返回结果写入result.txt文件中
>>> invk myFunction -t Async //设置触发类型为异步触发
Trigger 相关命令
1. mkt 创建触发器
-r
—invocation-role string 设置触发角色-s
—source-arn string 事件源的资源符号,例如acs:oss:cn-shanghai:12345678:myBucketName
-c
—trigger-config string 设置 trigger 配置文件-t
—type string 触发器类型,默认是 oss
OSS Trigger 的创建:
>>> mkt myFunction/myFunctionTrigger -t oss -r acs:ram::account_id:role/AliyunOSSEventNotificationRole -s acs:oss:cn-region:account_id:bucketName -c code/trigger.yaml
//Example
>>> mkt myFunction/myFunctionTrigger -t oss -r acs:ram::12345678:role/AliyunOSSEventNotificationRole -s acs:oss:cn-shanghai:12345678:myOssBucket -c code/ossTrigger.yaml
//其中yaml的文件内容如下
triggerConfig:
events:
- oss:ObjectCreated:PutObject
- oss:ObjectRemoved:DeleteObject
filter:
key:
prefix: myPrefix
suffix: mySuffix
HTTP Trigger 的创建:
>>> mkt myFunction/myFunctionTrigger -t http -c code/httpTrigger.yaml
//其中yaml的文件内容如下
triggerConfig:
authType: anonymous
methods:
- GET
2. upt 更新触发器
-r
—invocation-role string 设置触发角色-s
—source-arn string 事件源的资源符号,例如acs:oss:cn-shanghai:12345678:myBucketName
-c
—trigger-config string 设置trigger配置文件-t
—type string 触发器类型,默认是oss
>>> upt myFunction/myFunctionTrigger \
-t oss \
-r acs:ram::account_id:role/AliyunOSSEventNotificationRole \
-s acs:oss:cn-region:account_id:bucketName \
-c code/trigger.yaml
log 相关命令
1. mkl
- 创建函数服务 service 对应的日志项目 log project 和日志库 log store
-p
创建日志项目 log project-s
创建日志库 log store
>>> mkl -p my-log-project -s my-log-store myService
// 为服务新建日志项目和日志库
// 注意: log project的名字是全局唯一的,如果此名字被其他人占有了,那么会创建失败
2. logs 查看日志
-c
—count int 设置返回日志数目的最大行数(默认是 1000 行)-d
—duration int 返回从这段时间之前一直到现在的函数日志,单位为秒(默认是 86400,即 24h)-e
—end string 设置查看日志的截止时间,格式为 UTC RFC3339,例如 2017-01-01T01:02:03Z-s
—start string 设置查看日志的起始时间,格式为 UTC RFC3339,例如 2017-01-01T01:02:03Z-t
—tail 设置从倒数第i行开始打印日志
// 在相应service目录下
logs myFunction //默认打印一天内的前1000条日志
logs -d 60 -c 5000 myFunction //打印一分钟内执行的日志,最多打印5000条
logs -t -c 100 myFunction // 打印倒数100行日志
logs -s 2018-01-22T18:00:00Z -e 2018-01-22T19:00:00Z myFunction //打印从2018-01-22T18:00:00Z到2018-01-22T19:00:00Z的函数日志信息
角色授权相关命令
1. mkrp 创建ram policy
-a
—action string 设置 policy 的操作名称-r
—resource string 设置 policy 的操作对象- policy详细信息可参考 Policy语法结构
mkrp myPolicy \
-a '["oss:GetObject", "oss:PutObject"]' \
-r '"*"' //新建policy,对所有资源有oss的GetObject和PutObject权限
2. mksr 创建函数计算对应的角色
- 函数计算服务可以使用此角色去访问云资源
mksr roleName
3. attach 将 ram 策略赋予角色
-p
ram策略-r
ram角色
attach -p /ram/policies/myPolicy -r /ram/roles/myRole //将myPolicy策略赋予myRole角色
4. detach 为ram角色解除策略授权
-p
—policy string ram策略-r
—role string ram角色
detach -p /ram/policies/myPolicy -r /ram/roles/myRole //为myRole角色解除myPolicy授权
5. grant 为函数计算服务授权
grant myService
Please input the role name:
myRole
Please input the policy name:
myPolicy
Permission grant scenarios:
1. Allow FC write function logs to your log store.
2. Allow FC copy code from your OSS location.
Please input your choice [1-2]:
1
Please input the log project: my-log-project
Please input the log store: my-log-store