Serverless Devs是一個開源開放的Serverless開發者工具,通過該工具您可以快速地創建、部署和調用函數,實現項目的全生命周期管理。本文以部署運行環境為Python的函數為例,介紹如何使用Serverless Devs進行函數管理。
操作步驟
步驟一:安裝Serverless Devs
您可以通過命令行工具、下載二進制文件、腳本安裝Serverless Devs,本文以通過npm包管理安裝為例介紹具體的操作步驟。關于其他方式的安裝步驟,請參見安裝Serverless Devs。
安裝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的密鑰,具有該賬戶完全的權限,請您妥善保管。
通過引導式配置密鑰。關于配置密鑰的其他方式,請參見配置Serverless Devs。
執行以下命令選擇云廠商。
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規范定義。關于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
更多信息
關于使用Serverless Devs過程中的常見問題,請參見常見小貼士。