Modal
連接
從終端機連接Modal。傳入--help可查看Modal接受的旗標,在無瀏覽器環境中再加上--no-browser。
polylane cloud connect --provider modal來自你Modal設定的權杖ID與權杖密鑰。
Modal以在你Modal設定中建立的權杖連接。一個Modal權杖只會解析到一個工作區,所以一個權杖連接一個工作區。權杖在儲存前會先加密,代理永遠看不到它們。
- 開啟Modal,前往Settings → Tokens。
- 點擊New token,複製權杖ID(以
ak-開頭)與權杖密鑰(以as-開頭)。 - 把兩個值都貼到Polylane。
- Polylane驗證這一組並開始同步。
Polylane會探索你的環境,以及每個環境中的應用程式、函式(包括web端點)、執行中的沙箱、磁碟區、密鑰、佇列與dict。密鑰只依名稱對應:Modal永遠不會公開密鑰的值。
Modal沒有唯讀權杖選項,所以權杖帶有建立它的帳戶的權限。Polylane在同步期間只從Modal讀取。
疑難排解
「Invalid token」錯誤
- 權杖ID與權杖密鑰都是必要的;單獨任一個都無法驗證。
- 檢查該權杖是否已在Modal的設定中被撤銷。
- 確認你複製了完整的值,包括
ak-與as-前綴。
缺少資源
- 函式是透過它們的應用程式探索的,所以從未部署過的應用程式沒有函式可顯示。
- 已結束的沙箱會被跳過:只有執行中的會出現。
- 觸發手動同步,比下一次排程更早重新整理。
指標與成本
- 應用程式帶有兩張圖表:每個時間桶的stderr日誌行數,以及每小時的計量支出。Modal對其他一切只回報即時量測值,所以函式、沙箱與磁碟區沒有自己的圖表。
- stderr計數是日誌行數而不是失敗次數:一個Python追蹤回溯就是好幾行。
- Modal保留日誌24小時,所以圖表永遠不會回溯得比這更遠。
- 支出依應用程式歸屬,而Modal只在一小時結束後才會把它具體化,所以最新的一小時在穩定前讀數偏低。
從CI工作或任何其他沒有瀏覽器的環境連接Modal。
連接Modal不需要瀏覽器:主控台呼叫的同一個端點可以放進CI工作。一次經過驗證的POST建立連接並開始第一次同步。
先決條件
- 一把具有
cloud_accounts:write與cloud_accounts:read範圍的Polylane API金鑰。請見API金鑰與OAuth。 - 你的工作區ID,以
ws_開頭。用同一把金鑰從GET /v1/workspaces讀取它。 - 一組來自Settings → Tokens的Modal權杖:權杖ID(以
ak-開頭)與權杖密鑰(以as-開頭)。
建立連接
curl -X POST https://api.polylane.com/v1/cloud_accounts \
-H "x-api-key: $POLYLANE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"provider": "modal",
"workspaceId": "ws_0abc123",
"tokenId": "ak-...",
"tokenSecret": "as-..."
}'
該權杖恰好解析到一個Modal工作區,所以一次呼叫連接一個工作區。
回應列出已連接的內容,第一次同步已在執行。精簡為流程其餘部分會讀取的兩個欄位:
{
"success": true,
"result": {
"provider": "modal",
"accounts": [{ "id": "acc_34gky74ibc92h8t2efn8csrh", "status": "syncing" }],
"failures": []
}
}
已經連接的帳戶會落在failures而不是accounts中,所以重複呼叫永遠不會重複建立連接。
等待第一次同步
依id輪詢每個回傳的帳戶,直到status達到ready(註冊時為new,資源串流進來時為syncing):
until [ "$(curl -s "https://api.polylane.com/v1/cloud_accounts/$WORKSPACE_ID/$ACCOUNT_ID" \
-H "x-api-key: $POLYLANE_API_KEY" | jq -r '.result.status')" = "ready" ]; do
sleep 15
done
給這個迴圈一個期限,讓失敗的連接讓工作失敗,而不是掛住它。帳戶為ready後,它的資源就在拓樸中,Polylane也已開始第一次檢查。
從API中斷連接
刪除連接會停止所有同步與檢查,並刪除Polylane持有的憑證。這個呼叫需要cloud_accounts:delete範圍:
curl -X DELETE "https://api.polylane.com/v1/cloud_accounts/$WORKSPACE_ID/$ACCOUNT_ID" \
-H "x-api-key: $POLYLANE_API_KEY"
然後如下方中斷連接一節所述,在供應商端撤銷Modal憑證。
中斷連接
中斷連接會停止所有同步與檢查,並刪除Polylane持有的憑證。 Polylane在Modal中建立的一切也會一併移除;不會留下任何東西。
polylane cloud disconnect <id>工具
5代理可以在對話串中執行的操作。
支援的資源
10會出現在你基礎設施圖中的資源類型。