Modal
接続
ターミナルからModalを接続します。Modalが受け付けるフラグは--helpで確認でき、ヘッドレス環境では--no-browserを追加します。
polylane cloud connect --provider modalModalの設定から取得するトークンIDとトークンシークレットです。
Modalは、Modalの設定で作成したトークンで接続します。Modalのトークンはちょうど1つのワークスペースに解決されるため、1つのトークンが1つのワークスペースを接続します。トークンは保存前に暗号化され、エージェントが目にすることはありません。
- Modalを開き、Settings → Tokensに移動します。
- New tokenをクリックし、トークンID(
ak-で始まる)とトークンシークレット(as-で始まる)の両方をコピーします。 - 両方の値をPolylaneに貼り付けます。
- Polylaneがペアを検証し、同期を開始します。
Polylaneは環境を検出し、各環境内のアプリ、Webエンドポイントを含む関数、実行中のサンドボックス、ボリューム、シークレット、キュー、dictを検出します。シークレットは名前だけで対応付けられます。Modalがシークレットの値を公開することはありません。
Modalには読み取り専用トークンの選択肢がないため、トークンは作成したアカウントの権限を持ちます。Polylaneは同期中にModalから読み取るだけです。
トラブルシューティング
「Invalid token」エラー
- トークンIDとトークンシークレットの両方が必要です。どちらか一方だけでは認証できません。
- Modalの設定でトークンが取り消されていないことを確認してください。
ak-とas-のプレフィックスを含め、値全体をコピーしたことを確認してください。
リソースが見つからない
- 関数はアプリを通じて検出されるため、一度もデプロイされていないアプリには表示する関数がありません。
- 終了したサンドボックスはスキップされます。実行中のものだけが表示されます。
- 次回のスケジュールされた同期より早く更新するには、手動の同期を実行してください。
メトリクスとコスト
- アプリには2つのチャートがあります。バケットごとのstderrログ行数と、1時間ごとの従量課金の支出です。Modalはそれ以外のすべてについて瞬間的なゲージしか報告しないため、関数、サンドボックス、ボリュームには独自のチャートがありません。
- stderrの件数は失敗数ではなくログ行数です。1つのPythonトレースバックは複数行になります。
- Modalはログを24時間保持するため、チャートがそれより前に遡ることはありません。
- 支出はアプリごとに帰属し、Modalは1時間が終了してからその時間を確定するため、最新の時間は落ち着くまで低く表示されます。
CIジョブや、ブラウザーのないその他の環境からModalを接続します。
Modalの接続にブラウザーは必要ありません。コンソールが呼び出すのと同じエンドポイントがCIジョブに収まります。認証済みのPOSTを1回行うと、接続が作成され、最初の同期が始まります。
前提条件
cloud_accounts:writeとcloud_accounts:readスコープを持つPolylane APIキー。APIキーとOAuthを参照してください。ws_で始まるワークスペースID。同じキーで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-..."
}'
トークンはちょうど1つのModalワークスペースに解決されるため、1回の呼び出しが1つのワークスペースを接続します。
応答は接続されたものを一覧し、最初の同期はすでに実行中です。フローの残りが読む2つのフィールドに絞ると次のとおりです。
{
"success": true,
"result": {
"provider": "modal",
"accounts": [{ "id": "acc_34gky74ibc92h8t2efn8csrh", "status": "syncing" }],
"failures": []
}
}
すでに接続されているアカウントはaccountsではなくfailuresに入るため、呼び出しを繰り返しても接続が重複することはありません。
最初の同期を待つ
返された各アカウントを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"
次に、下のDisconnectで説明されているとおり、プロバイダー側でModalの認証情報を取り消します。
接続解除
接続解除すると、すべての同期とチェックが停止し、Polylaneが保持していた認証情報が削除されます。 PolylaneがModalにセットアップしたものもすべて取り除かれ、何も残りません。
polylane cloud disconnect <id>ツール
5エージェントがスレッドで実行できる操作です。
対応リソース
10インフラグラフに表示されるリソースの種類です。