本文介紹使用Serverless Devs工具過程中可能遇到的問題,并提供對應的解決方案。
如何配置s.yaml文件?
關于YAML規范的詳細信息,請參見YAML規范。
使用Serverless Devs偶然出現異常,但未提示錯誤信息怎么辦?
您可以按照以下步驟排查問題。
執行命令
npm install @serverless-devs/s -g
升級工具。執行命令
s clean --all
刪除冗余文件。執行命令
rm -rf .s
移除同級目錄下的.s
文件。執行
s -v
查看工具版本。如果執行命令后無任何響應,可能是本地Node.js環境異常,需要重新安裝Node.js 12或更高版本。
如果問題還未解決,請加入釘釘用戶群(釘釘群號11721331),并提供日志文件{s-home}/logs/{TraceId}.log和s.yaml文件,聯系函數計算開發工程師幫您解決。
關于{s-home}和{TraceId}的獲取方式,請參見下圖。
部署代碼時,希望以本地配置為準如何處理?
您可以在執行命令s deploy
時,選擇use-local
或執行命令時指定參數,即s deploy -y --use-local
。
Serverless Devs工具支持多Region部署嗎?
支持。具體操作,請參見Serverless Devs工具多Region部署。
如何本地調試函數?
如果您的Runtime不是Custom Runtime,而是函數計算內置語言,例如Node.js、Python等,推薦使用Serverless Devs工具的本地調用方式進行調試。具體操作,請參見Local命令。
如果您的Runtime是Custom Runtime,可以按照正常的開發習慣發起一個Server代碼調試流程。
說明針對Custom Runtime,
s local invoke
命令能正常發起函數本地執行,但不支持斷點調試。
怎樣使用.fcignore文件?
部署較大的代碼包時,將項目中的依賴上傳到NAS文件系統后,可以通過.fcignore忽略上傳到NAS的文件,然后將項目部署到線上。更多信息,請參見fcignore使用方法。
s.yaml文件中定義了多個函數時如何指定部署和調用某個函數?
s.yaml文件中,可能存在一個服務對應多個函數的情況,如果只想部署或調用其中某一個函數,可以在執行命令s deploy
、s local start
或s local invoke
時,指定函數名稱。例如,下圖s.yaml文件示例中,執行s helloworld deploy
只部署helloworld
函數。
執行s local
或者s build
命令時出現“connect ENOENT /var/run/docker.sock”錯誤,如何處理?
報錯信息
報錯信息類似如下內容:
Project xxx failed to execute:
ERROR:
connect ENOENT /var/run/docker.sock
解決方案
如果本地執行Docker命令是正常的,但是通過Serverless Devs執行s local
或者s build
命令異常,可以通過以下步驟解決該問題。
查看
/var/run/docker.sock
文件是否存在。運行以下命令查看文件是否存在。如果存在該文件,則跳過以下步驟。如果不存在該文件,則執行以下步驟。
ll /var/run/docker.sock
設置軟鏈到
/var/run
目錄。ll ~/.docker/run/docker.sock ln -s ~/.docker/run/docker.sock /var/run/docker.sock
查看Docker客戶端是否啟動。
通過Serverless Devs執行
s local
或者s build
命令,需要先啟動Docker客戶端,請確保已啟動Docker客戶端。
在應用中心或者Serverless Devs工具中如何使用Node.js 18?
在函數計算的Web場景下,用戶大多使用的運行時為自定義運行時,但是自定義運行時的內置Node、Python、PHP的版本可能無法滿足用戶的需求。例如,您需要使用Node.js 18的版本,使用方法如下:
建議您在控制臺先創建一個自定義運行時函數,運行環境選擇Node.js 18,然后在函數詳情頁面中導出函數的配置。YAML中的layers用來掛載Node.js 18公共層,PATH變量可以將Node.js 18設置為默認版本。
service:
internetAccess: true
name: test-service
function:
handler: index.handler
timeout: 60
diskSize: 512
caPort: 3000
layers:
- acs:fc:cn-hangzhou:official:layers/Nodejs18/versions/1
customRuntimeConfig:
command:
- node
- server.js
runtime: custom.debian10
environmentVariables:
PATH: /opt/nodejs18/bin:/usr/local/bin/...
NODE_PATH: /opt/nodejs/node_modules
...
如果您在使用應用中心的功能,由于目前構建的過程中無法使層的配置生效。您需要通過export PATH的方式使構建過程中使用Node.js 18來進行npm install
和npm run build
。具體請參見升級流水線構建環境運行時。
通過Serverless Devs工具部署的應用怎么無法訪問了?域名被刪除了?
****.devsapp.net
域名是CNCF Sandbox項目Serverless Devs社區所提供,僅供學習和測試使用,不可用于任何生產使用。社區會對該域名進行不定期地撥測,并在域名下發30天后進行回收,建議您綁定自定義域名以獲得更好的使用體驗。