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:Function Compute資源定義檔案,以YAML規範定義。
code:code檔案夾內包含index.py檔案,可在該檔案內編輯函數代碼邏輯。
readme.md:依賴資訊清單檔,該檔案內定義了專案所需的各個模組和專案的配置資訊。
執行以下命令,進入專案目錄。
cd start-fc3-python
步驟四:部署函數
執行以下命令,將函數部署到Function Compute。其中函數的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