PlanetScale
接続
ターミナルからPlanetScaleを接続します。PlanetScaleが受け付けるフラグは--helpで確認でき、ヘッドレス環境では--no-browserを追加します。
polylane cloud connect --provider planetscaleOAuth認可、またはPlanetScaleの組織設定から取得するサービストークンです。
PlanetScaleはOAuthで接続します。Connect with PlanetScaleをクリックし、PlanetScaleで読み取りアクセスを認可すると、同期が始まった状態でリダイレクトされて戻ります。PlanetScaleアカウントが複数の組織にアクセスできる場合は、求められたときに接続する組織を選びます。トークンは保存前に暗号化され、エージェントが目にすることはありません。
サービストークンによる代替手段
長期間有効な認証情報を使いたい場合は、代わりにサービストークンで接続します。
- PlanetScaleを開き、組織のSettings → Service tokensに移動します。
- Create service tokenをクリックし、トークンIDとトークンの両方をコピーします。
- トークンに組織とそのデータベースへの読み取りアクセス(例:
read_databases、read_branches)を付与します。 - トークンIDとトークンをPolylaneに貼り付けます。トークンが複数の組織に到達できる場合は、接続する組織名も指定します。
- Polylaneがトークンを検証し、同期を開始します。
各接続は1つのPlanetScale組織を対象とします。Polylaneはそのデータベースとブランチを、状態、プラン、リージョン、スキーマの活動を含めて検出します。
トラブルシューティング
「Invalid service token」エラー
- トークンIDとトークンの両方が必要です。トークンだけでは認証できません。
- PlanetScaleの設定でトークンが削除されていないことを確認してください。
- トークンに組織の読み取りアクセスがあることを確認してください。
「Multiple PlanetScale organizations are reachable」エラー
- 認証情報が複数の組織に到達できるため、接続する組織を指定してください。
- コンソールでOAuthにより接続する場合は、認可後に求められたときに組織を選びます。
- APIで接続する場合は、
organizationフィールドに組織名を設定します。
リソースが見つからない
- PlanetScaleがすべてを同期するには数分かかることがあります。
- アカウントヘッダーから手動のSyncを実行して更新してください。
接続解除
Polylaneでアカウントを接続解除し、次にPlanetScaleの組織設定からサービストークンを削除します。
CIジョブや、ブラウザーのないその他の環境からPlanetScaleを接続します。
PlanetScaleの接続にブラウザーは必要ありません。コンソールが呼び出すのと同じエンドポイントがCIジョブに収まります。認証済みのPOSTを1回行うと、接続が作成され、最初の同期が始まります。
前提条件
cloud_accounts:writeとcloud_accounts:readスコープを持つPolylane APIキー。APIキーとOAuthを参照してください。ws_で始まるワークスペースID。同じキーでGET /v1/workspacesから読み取ります。- 組織のSettings → Service tokensから取得した、組織の読み取りアクセス(例:
read_databases、read_branches)を持つPlanetScaleのサービストークンのペア。コンソールのOAuthフローにはブラウザーが必要ですが、サービストークンには不要です。
接続を作成する
curl -X POST https://api.polylane.com/v1/cloud_accounts \
-H "x-api-key: $POLYLANE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"provider": "planetscale",
"workspaceId": "ws_0abc123",
"tokenId": "<service-token-id>",
"token": "<service-token>",
"organization": "my-org"
}'
1回の呼び出しが1つのPlanetScale組織を接続します。
organizationは、トークンがちょうど1つの組織にしか到達しない場合にのみ省略できます。それ以外の場合、呼び出しは到達可能な組織名を列挙する400で失敗します。
応答は接続されたものを一覧し、最初の同期はすでに実行中です。フローの残りが読む2つのフィールドに絞ると次のとおりです。
{
"success": true,
"result": {
"provider": "planetscale",
"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で説明されているとおり、プロバイダー側でPlanetScaleの認証情報を取り消します。
接続解除
接続解除すると、すべての同期とチェックが停止し、Polylaneが保持していた認証情報が削除されます。 Polylaneは、PlanetScaleのAPIが許す範囲のものを取り除きます。次のものは、自分で取り除くまで残ります。
- OAuth grant
polylane cloud disconnect <id>ツール
2エージェントがスレッドで実行できる操作です。
対応リソース
2インフラグラフに表示されるリソースの種類です。