faas-cf是天翼云函数计算的Serverless Devs组件,使用该组件,您可以快速部署Serverless项目,以及管理Serverless函数的生命周期。本文介绍如何使用Serverless Devs和faas-cf进行部署、调用、删除函数。
安装 Serverless Devs 工具
您可以通过如下任一方法进行安装:
通过npm安装
npm install @serverless-devs/s -g
通过yarn安装
yarn global add @serverless-devs/s
手动下载二进制安装
1. 进入Serverless Devs releases页面,选择最新的发布版本,下载对应操作系统的压缩包。
2. 解压压缩包。
3. 将解压后的二进制文件进行重命名。对于Windows平台,将s-xxx-win.exe重命名为s.exe;对于Linux/macOS平台,将s-xxx-linux/s-xxx-macos重命名为s。
4. 将二进制文件移动到系统PATH目录。比如,对于Windows平台,将s.exe移动到C:\Windows\System32;对于Linux/macOS平台,将s移动到/usr/local/bin。
通过脚本安装
脚本安装方式仅适用于Linux/macOS:
curl -o- -L https://cli.serverless-devs.com/install.sh | bash
验证安装
打开命令终端,输入 s -v
命令,如果正确安装和配置,将会显示如下输出:
@serverless-devs/s: 3.xx
配置密钥
1. 登录天翼云官网,创建并获取AccessKey。
2. 您可以执行以下命令一键配置 Serverless Devs 工具(请将${AK}、${SK}分别换成您的 AccessKey ID、SecurityKey):
s config add -a default --kl AK,SK --il ${AK},${SK} -f
您也可以使用交互式命令 s config add
进行配置,provider选择“Custom”,然后配置AK、SK项。以下为示例:
$ s config add
? Please select a provider: Custom (others)
? Please select a type: Add key-value pairs
? Please enter key: AK
? Please enter value: Input Your AccessKey ID
? Please select a type: Add key-value pairs
? Please enter key: SK
? Please enter value: Input Your SecurityKey
? Please select a type: End of adding key-value pairs
? Please create alias for key pair. If not, please enter to skip default
Alias: default
Credential:
__provider: Custom
AK: ************************
SK: ************************
管理函数
新建 Serverless Devs 项目
创建一个空文件夹,在该文件夹下创建 s.yaml 文件、code 目录,然后在 code 目录下 创建 index.py 文件。文件目录结构如下:
index.py 文件为函数代码,文件内容如下:
def handler(event, context):
return 'hello world'
Serverless Devs 工具默认使用 s.yaml 文件描述部署资源的元信息,其内容如下:
edition: 3.0.0
name: hello-devsapp
access: default
vars:
region: "bb9fdb42056f11eda1610242ac110002"
resources:
my-func:
component: faas-cf # 组件,提供具体的业务能力。faas-cf 组件提供了对天翼云Serverless函数的管理能力
props:
region: ${vars.region} # 部署的资源池,天翼云华东1资源池为 bb9fdb42056f11eda1610242ac110002
functionName: hello-world # 函数名称
code: ./code # 函数代码目录
createType: 1 # 函数类型:标准函数(1)、自定义函数(2)、容器函数(3)
runtime: # 函数运行配置
handleType: event # 处理事件请求(event)、处理HTTP请求(http)
handler: index.handler # 请求处理程序
runtime: python3.10 # 运行环境
executeTimeout: 64 # 执行超时时间
instanceConcurrency: 1 # 实例并发度
container: # 运行容器配置
memorySize: 512 # 内存规格,单位:MB
cpu: 0.5 # vCPU规格,单位vCPU
diskSize: 512 # 临时硬盘大小,单位:MB
timeZone: UTC # 时区,例如:UTC, Asia/Shanghai
部署函数
进入到 s.yaml 文件所在的路径,执行如下命令进行部署函数:
s deploy
如果部署函数成功,将会显示如下输出:
functionId: 39061695070521915
code:
ossBucketName:
ossObjectName: function/******
snapshotOssObjectName:
zipFile:
container:
image: faas-******/python3.10-runtime:v1.3.1
timeZone: UTC
memorySize: 512
cpu: 0.5
diskSize: 512
runCommand: Li9ib290c3RyYXAuc2g=
listenPort: 8080
codeDirPath: /code
logLevel:
sysLogLevel: INFO
maxScale: null
minScale: null
fastStart: 0
functionName: hello-world
...
调用函数
进入到上述 s.yaml 文件所在的路径,执行如下命令进行调用函数:
s invoke
如果调用函数成功,将会显示如下输出:
status: 200
headers:
content-length: 11
content-type: text/plain; charset=utf-8
date: Tue, 27 May 2025 08:06:01 GMT
x-fc-request-id: cfece192-0449-4de4-bf5f-180700006fa8
x-fc-status-code: 200
x-fc-upstream-service-time: 2781
x-fc-req-cost-time: 2782
x-fc-req-arrive-time: 1748333160021
x-fc-resp-start-time: 1748333162803
connection: close
body: hello world
__component: faas-cf
删除函数
进入到上述 s.yaml 文件所在的路径,执行如下命令进行删除函数:
s remove
根据提示选择确认,以删除函数,如下为示例输出:
? 确认删除函数'hello-world'吗? 确认