Serverless Devs是一个开源开放的Serverless开发者工具,通过该工具您可以快速地创建、部署和调用函数,实现项目的全生命周期管理。本文以部署运行环境为Python的函数为例,介绍如何使用Serverless Devs进行函数管理。
操作步骤
步骤一:安装Serverless Devs
您可以通过命令行工具、下载二进制文件、脚本安装Serverless Devs,本文以通过npm包管理安装为例介绍具体的操作步骤。
安装Node.js和npm包管理工具。
关于安装方式,请参见Node.js官网。
说明Node.js的版本需为Node.js 14及以上。安装完成后,您可以执行
node --version
命令查看Node.js的版本。执行以下命令,安装Serverless Devs。
sudo npm install @serverless-devs/s -g
执行以下命令,验证工具是否安装成功。
sudo s -v
成功安装后的执行结果示例如下。
@serverless-devs/s: 3.0.1, s-home: /root/.s, linux-x64, node-v14.17.4
步骤二:配置Serverless Devs
获取阿里云密钥信息。
您需要在创建AccessKey时,保存AccessKey Secret相关信息,具体请参见创建AccessKey。
说明AccessKey ID和AccessKey Secret是您访问阿里云API的密钥,具有该账户完全的权限,请您妥善保管。
通过引导式配置密钥。
执行以下命令选择云厂商。
sudo s config add
执行输出:
> Alibaba Cloud (alibaba) AWS (aws) Azure (azure) Baidu Cloud (baidu) Google Cloud (google) Huawei Cloud (huawei) Tencent Cloud (tencent) (Move up and down to reveal more choices)
选择目标云厂商,然后按回车。本文以
Alibaba Cloud (alibaba)
为例。根据交互提示,设置相关密钥信息。
Please select a provider: Alibaba Cloud (alibaba) Refer to the document for alibaba key: http://config.devsapp.net/account/alibaba AccountID 188077086902**** AccessKeyID LTAI4G4cwJkK4Rza6xd9**** AccessKeySecret eCc0GxSpzfq1DVspnqqd6nmYNN**** Please create alias for key pair. If not, please enter to skip default Alias: default AccountID: 188077086902**** AccessKeyID: LTAI4G4cwJkK4Rza6xd9**** AccessKeySecret: eCc0GxSpzfq1DVspnqqd6nmYNN**** Configuration successful
步骤三:初始化函数示例
执行以下命令创建一个Python语言的Hello World项目。
sudo s init start-fc3-python
执行输出如下:
More applications: https://registry.serverless-devs.com ? Please input your project name (init dir) start-fc3-python Downloading[/v3/packages/start-fc3-python/zipball/0.0.8]... Download start-fc3-python successfully ... 创建应用所在的地区 ? 地域 cn-huhehaote 只能包含字母、数字、下划线和中划线。不能以数字、中划线开头。长度在 1-128 之间。 ? 函数名称 start-python-8i32 创建应用所在的地区 ? python 运行时 python3.9 ? please select credential alias default * Before using, please check whether the actions command in Yaml file is available * Carefully reading the notes in s.yaml is helpful for the use of the tool * If need help in the use process, please apply to join the Dingtalk Group: 33947367 Thanks for using Serverless-Devs You could [cd /start-fc3-python] and enjoy your serverless journey! If you need help for this example, you can use [s -h] after you enter folder. Document ❤ Star: https://github.com/Serverless-Devs/Serverless-Devs More applications: https://registry.serverless-devs.com
当成功初始化项目后,会在当前目录中生成一个start-fc3-python文件夹,该文件夹内包含以下文件:
s.yaml:函数计算资源定义文件,以YAML规范定义。
code:code文件夹内包含index.py文件,可在该文件内编辑函数代码逻辑。
readme.md:依赖清单文件,该文件内定义了项目所需的各个模块和项目的配置信息。
执行以下命令,进入项目目录。
cd start-fc3-python
步骤四:部署函数
执行以下命令,将函数部署到函数计算。其中函数的name、runtime、内存等元信息都是在s.yaml
定义。
sudo s deploy
执行输出如下:
Steps for [deploy] of [hello-world-app]
====================
✔ [hello_world] completed (3.1s)
Result for [deploy] of [hello-world-app]
====================
region: cn-huhehaote
description: hello world by serverless devs
functionName: start-python-8i32
handler: index.handler
internetAccess: true
memorySize: 128
role:
runtime: python3.9
timeout: 30
A complete log of this run can be found in: /Users/x1/.s/logs/0229164849
步骤五:调用函数
执行以下命令调用函数。
sudo s invoke -e "test"
执行输出如下:
Steps for [invoke] of [hello-world-app]
====================
========= FC invoke Logs begin =========
FunctionCompute python3 runtime inited.
FC Invoke Start RequestId: 1-65e045b1-123e1745-79e146cd8b01
2024-02-29T08:52:01.317Z 1-65e045b1-123e1745-79e146cd8b01 [INFO] b'test'
FC Invoke End RequestId: 1-65e045b1-123e1745-79e146cd8b01
Duration: 2.38 ms, Billed Duration: 3 ms, Memory Size: 128 MB, Max Memory Used: 8.78 MB
========= FC invoke Logs end =========
Invoke instanceId: c-65e045b1-12f566fe-ca21d8fe46f1
Code Checksum: 3418420950487476908
Qualifier: LATEST
RequestId: 1-65e045b1-123e1745-79e146cd8b01
Invoke Result:
test
✔ [hello_world] completed (0.46s)
A complete log of this run can be found in: /Users/x1/.s/logs/0229165200
步骤六:删除函数(可选)
如果后续不再继续使用该函数,请执行以下命令删除。
sudo s remove
执行输出如下:
Steps for [remove] of [hello-world-app]
====================
Remove function: cn-huhehaote/start-python-8i32
? Are you sure you want to delete the resources listed above yes
✔ [hello_world] completed (11.67s)
A complete log of this run can be found in: /Users/x1/.s/logs/0229165500