本文介紹使用Serverless Devs工具過程中可能遇到的問題,并提供對應的解決方案。
如何配置s.yaml文件?
關于YAML規范的詳細信息,請參見YAML規范。
使用Serverless Devs偶然出現異常,但未提示錯誤信息怎么辦?
您可以按照以下步驟排查問題。
執行命令
npm install @serverless-devs/s3 -g
升級工具。執行命令
s clean --all
刪除所有組件及冗余文件。執行
s -v
查看工具版本。如果執行命令后無任何響應,可能是本地Node.js環境異常,需重新安裝Node.js 14或以上的版本。
如果問題還未解決,請加入釘釘用戶群(釘釘群號64970014484),并提供日志文件和s.yaml
文件,聯系函數計算開發工程師幫您解決。
關于日志文件的獲取方式,請參見下圖。
部署代碼時,希望以本地配置為準如何處理?
您可以在執行命令s deploy
時,選擇-y
參數,即s deploy -y
。
Serverless Devs工具支持多Region部署嗎?
支持。具體操作,請參見以下示例。
Shell腳本
```bash
#!/bin/bash
regions=("cn-hangzhou" "ap-southeast-1")
for r in ${regions[@]}
do
export REGION=$r
s deploy -y
done
```
s.yaml示例
```yaml
edition: 3.0.0
name: hello-world-app
access: "default"
resources:
hello_world:
component: fc3
props:
region: ${env('REGION')}
functionName: "start-nodejs-im1g"
description: 'hello world by serverless devs'
runtime: "nodejs14"
code: ./code
handler: index.handler
memorySize: 128
timeout: 30
```
如何本地調試函數?
如果您的運行時不是自定義運行時或自定義鏡像,而是函數計算內置語言,例如Node.js、Python等,推薦使用Serverless Devs工具的本地調用方式進行調試。具體操作,請參見Local命令。
如果您的運行時是自定義運行時或自定義鏡像,可以按照正常的開發習慣啟動一個Server代碼調試流程。
說明針對自定義運行時,
s local invoke
命令能正常發起函數本地執行,但不支持斷點調試。
怎樣使用.fcignore文件?
您可以在代碼指定目錄下配置一個.fcignore
文件,.fcignore
文件用于定義忽略相關文件或者將文件夾打包到函數代碼的ZIP包。更多信息,請參見.fcignore使用方法。
s.yaml文件中定義了多個函數時如何指定部署和調用某個函數?
s.yaml文件中,可能存在一個服務對應多個函數的情況,如果只想部署或調用其中某一個函數,可以在執行命令s deploy
、s info
或s local invoke
時,指定資源名稱。例如,s.yaml文件示例如下,包含多個函數,部署函數時可以執行s helloworld1 deploy
只部署helloworld1
函數。
```yaml
edition: 3.0.0
name: hello-world-app
access: "default"
resources:
hello_world1:
component: fc3
props:
region: cn-huhehaote
functionName: "hello_world1"
description: 'hello world1 by serverless devs'
runtime: "nodejs14"
code: ./code
handler: index.handler
hello_world2:
component: fc3
props:
region: cn-huhehaote
functionName: "hello_world2"
description: 'hello world2 by serverless devs'
runtime: "nodejs14"
code: ./code
handler: index.handler
```
如何基于Podman,使用Serverless Devs工具進行構建與本地調試?
使用Serverless Devs工具執行構建或本地調試函數時,如果基于Podman工具,會提示報錯Failed to start docker, xxx
,此時,您可以創建一個Docker目錄軟鏈接指向Podman的目錄,然后再執行構建或本地調試。創建軟鏈接的具體操作如下所示。
查詢Podman可執行文件路徑。
which podman
本文示例中Podman可執行文件路徑為
/usr/bin/podman
。設置軟鏈接。
ln -s /usr/bin/podman /usr/bin/docker
查詢軟鏈接是否已生效。
ls -lh /usr/bin/docker
預期輸出如下:
lrwxrwxrwx 1 root root 15 Jan 5 09:30 /usr/bin/docker -> /usr/bin/podman