之前使用騰訊云serverless,但是突然開始收費了。所以改用functiongraph
首先登陸華為云。
目錄
1.登錄華為云
2.在控制臺找到functiongraph并開通
3.添加依賴包:
3.1 制作依賴包
3.2引入依賴包
4.發送請求
4.1直接發送
4.1.1uri
4.1.2 請求頭
4.1.3 body
4.1.4 Endpoint
4.1.5 測試請求
4.2 通過api網關請求
1.登錄華為云
?
2.在控制臺找到functiongraph并開通
這里參考這篇博客:
騰訊云函數收費了 改用免費華為云函數 ------以每日簽到打卡類、北京某高校每日上報為例_免費云函數-CSDN博客
3.添加依賴包:
3.1 制作依賴包
python參考這個網址:
制作依賴包_函數工作流 FunctionGraph_開發指南_Python (huaweicloud.com)
node.js參考這個網址:
制作依賴包_函數工作流 FunctionGraph_開發指南_Node.js (huaweicloud.com)
3.2引入依賴包
將制作好的zip包上傳:
然后就會創建好依賴包,比如我起名為node_mysql的依賴包創建后如圖
然后到函數代碼頁面添加依賴包:
這樣就添加成功了。
然后直接在代碼中就可以引入:
4.發送請求
4.1直接發送
參考這里:
同步執行函數_函數工作流 FunctionGraph_API參考_API_函數調用 (huaweicloud.com)
4.1.1uri
project_id獲取:
這一列就是project_id,選擇對應位置的即可。
function_urn:
4.1.2 請求頭
這里有一個必要參數:
這里使用iam獲取。
參考這里:
獲取IAM用戶Token(使用密碼)_統一身份認證服務 IAM_API參考_API_Token管理 (huaweicloud.com)
IAMDomain獲取:
至于IAMPassword就是IAMuser的password
project.name獲取:
這里就是前面獲取project_id的那張圖對應地區的英文名。
然后通過postman發送請求:
這個就是token。
這里需要注意的scope下必須使用project,不然獲取的token不能用于連接云函數服務。
4.1.3 body
這個視具體情況而定。
4.1.4 Endpoint
參考這里:
構造請求_函數工作流 FunctionGraph_API參考_如何調用API (huaweicloud.com)
上面的uri只是resource-path,前面還需要endpoint.
上面的例子iam服務的endpoint,functiongraph的endpoint可以在這里獲取:
地區和終端節點_OpenAPI_開發者中心-華為云 (huaweicloud.com)
這個就是。前面的區域不固定,例如上海一是cn-east-3也可以使用。
4.1.5 測試請求
這里我在上海一創建一個python函數。
代碼:
就是返回請求內容。
這里替換endpoint,project_id, function_urn后完整的url:
https://functiongraph.cn-east-3.myhuaweicloud.com/v2/221028919ee2453b97bdec80a452d4e8/fgs/functions/urn:fss:cn-east-3:221028919ee2453b97bdec80a452d4e8:function:default:test1:latest/invocations
然后還要添加headers中的token:
填入之前獲取的token。
然后設置一下body
注意發送post請求,(functiongraph的api好像只支持post)
結果:
請求成功。
4.2 通過api網關請求
由于我之前做過一個小項目需要在瀏覽器請求云函數。但是涉及到跨域問題。會先發一個prelight request。但是是OPTIONS類型的請求。由于這個functiongraph的api不支持OPTIONS。所以導致prelight request 一直失敗。一直提示response中沒有"access-contral-all-origin"。但是我的云函數代碼中是設置了response中的這個參數的。實際上就是api根本沒有返回response,因為它根本不支持options類型的請求。
例如我只改變請求類型:
解決方法就是使用api網關。
這里為function綁定api網關。
這里隨便起個名字,如果之前沒有創建過分組,就創建一個,這個貌似沒啥影響。
然后就創建好了。直接調用那個url就可以請求了。
可以看到返回的內容還是很復雜的,可能通過api后請求event變復雜了吧。
這里我們改一下代碼:
好了。
這樣就解決了請求方式限制的問題了。同時也可以解決跨域的問題了。
而且通過api網關請求有一個好處,就是url直接給了,不用改project_id等參數了。
而且如果在創建網關時選擇安全認證為不認證,甚至不需要token.
例如刪掉Header中的token。
然后修改一下網關設置:
點擊這里:
之前默認是iam認證,這里改為無認證。然后一直下一步
點擊完成
再測試:
成功。
但是這種方式降低了安全性。
這里測試完畢,銷毀云函數。