invoke
用於調用已部署的lambda函數,可以給lambda函數發送event數據,讀取log或者顯示其他調用信息。
基本命令
serverless invoke --function functionName
命令參數
--function
縮寫爲-f
用於指定調用的lambda函數的名稱
--stage
縮寫爲-s
用於指定部署的stage
--region
縮寫爲-r
用於指定部署的region
--qualifier
縮寫爲
-q
用於指定調用函數的版本號或者別名,默認爲
$LATEST
--data
縮寫爲
-d
用於作爲函數event的字符串數據,默認從標準輸入中進行讀取
--raw
將數據作爲string event來調用lambda函數,即便數據是json格式,最終傳遞給函數的也是string,如果不設置,json數據會被解析爲object,最終傳遞給函數的是對象
--path
縮寫爲
-p
用於指定作爲lambda函數輸入數據的json文件路徑,路徑爲service的根目錄的相對路徑
--type
縮寫爲
-t
指定調用類型,可選值爲RequestResponse
, Event
或者DryRun,默認爲
RequestResponse
.
--log
縮寫爲
-l
如果設置爲true且調用類型爲
RequestResponse
, 會輸出調用的log數據,默認值爲false.
示例
調用指定階段和區域的已部署的函數
serverless invoke --function functionName --stage dev --region us-east-1
以string data作爲輸入調用lambda函數
serverless invoke --function functionName --stage dev --region us-east-1 --data "hello world"
以標準輸入作爲輸入調用lambda函數
node dataGenerator.js | serverless invoke --function functionName --stage dev --region us-east-1
顯示調用函數的log信息
serverless invoke --function functionName --stage dev --region us-east-1 --log
以json data作爲輸入調用lambda函數
serverless invoke --function functionName --stage dev --region us-east-1 --path lib/data.json
data.json
{
"resource": "/",
"path": "/",
"httpMethod": "GET"
// etc. //
}
invoke local
本地調用lambda函數用於測試和日誌輸出,context只能使用簡單mock data
限制
只支持ptyhon和nodejs運行時
基本命令
serverless invoke local --function functionName
命令參數
--function
縮寫爲-f
用於指定調用的lambda函數的名稱
--path
縮寫爲
-p
用於指定作爲lambda函數輸入數據的json文件路徑,路徑爲service的根目錄的相對路徑
--data
縮寫爲
-d
用於作爲函數event的字符串數據,默認從標準輸入中進行讀取
--raw
將數據作爲string event來調用lambda函數,即便數據是json格式,最終傳遞給函數的也是string,如果不設置,json數據會被解析爲object,最終傳遞給函數的是對象
--contextPath
縮寫爲
-x
用於指定作爲lambda函數輸入context的json文件的路徑,路徑爲service的根目錄的相對路徑
--context
縮寫爲
-c
用於指定作爲lambda函數輸入context的string data,與--data作用相同,--contextPath指定的context會覆蓋該參數指定的string data。
--env
縮寫爲-e
用於指定調用函數時需要的環境變量,格式爲<name>=<value>,可以重複使用指定多個環境變量
--docker
爲NodeJS/Python/Ruby/Java運行時啓動docker支持,其他運行時默認啓用
--docker-arg
與--docker參數合用,用於給docker啓動命令指定額外的參數,比如 --docker-arg '-p 9229:9229' --docker-arg '-v /var:/host_var'
--skip-package
使用.serverless
文件夾中的文件,避免在每次調用時重新打包已節省調用時間
示例
自定義data作爲輸入調用本地函數
serverless invoke local --function functionName --data "hello world"
serverless invoke local --function functionName --data '{"a":"bar"}'
自定義json文件作爲輸入調用本地函數
serverless invoke local --function functionName --path lib/data.json
自定義context作爲輸入調用本地函數
serverless invoke local --function functionName --context "hello world"
自定義contextPath作爲輸入調用本地函數
serverless invoke local --function functionName --contextPath lib/context.json
指定環境變量
serverless invoke local -f functionName -e VAR1=value1
# Or more than one variable
serverless invoke local -f functionName -e VAR1=value1 -e VAR2=value2
參考
https://www.serverless.com/framework/docs/providers/aws/cli-reference/invoke/
https://www.serverless.com/framework/docs/providers/aws/cli-reference/invoke-local/