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을 클릭하고 token ID와 token을 모두 복사합니다.
- 토큰에 조직과 데이터베이스에 대한 읽기 접근(예:
read_databases,read_branches)을 부여합니다. - 토큰 ID와 토큰을 Polylane에 붙여 넣습니다. 토큰이 둘 이상의 조직에 접근할 수 있으면 연결할 조직 이름도 제공하세요.
- Polylane이 토큰을 검증하고 동기화를 시작합니다.
각 연결은 하나의 PlanetScale 조직을 다룹니다. Polylane은 조직의 데이터베이스와 브랜치를 상태, 플랜, 리전, 스키마 활동을 포함해 발견합니다.
문제 해결
"Invalid service token" 오류
- 토큰 ID와 토큰이 모두 필요합니다. 토큰만으로는 인증할 수 없습니다.
- PlanetScale 설정에서 토큰이 삭제되지 않았는지 확인하세요.
- 토큰에 조직 읽기 접근이 있는지 확인하세요.
"Multiple PlanetScale organizations are reachable" 오류
- 자격 증명이 둘 이상의 조직에 접근할 수 있으므로 연결할 조직을 지정하세요.
- 콘솔에서 OAuth로 연결하는 경우, 승인 후 요청 시 조직을 선택하세요.
- API로 연결하는 경우,
organization필드를 조직 이름으로 설정하세요.
리소스 누락
- PlanetScale이 모든 것을 동기화하는 데 몇 분이 걸릴 수 있습니다.
- 계정 헤더에서 수동 Sync를 실행해 새로 고치세요.
연결 해제
Polylane에서 계정의 연결을 해제한 뒤, PlanetScale 조직 설정에서 서비스 토큰을 삭제하세요.
CI 작업이나 브라우저가 없는 다른 환경에서 PlanetScale을 연결하세요.
PlanetScale 연결에는 브라우저가 필요하지 않습니다: 콘솔이 호출하는 것과 같은 엔드포인트를 CI 작업에 담을 수 있습니다. 인증된 POST 하나가 연결을 만들고 첫 동기화를 시작합니다.
사전 요구 사항
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"
}'
한 번의 호출로 PlanetScale 조직 하나가 연결됩니다.
organization은 토큰이 정확히 하나의 조직에만 접근할 수 있을 때만 생략할 수 있습니다. 그렇지 않으면 접근 가능한 조직 이름을 나열하는400으로 호출이 실패합니다.
응답은 연결된 것을 나열하며, 첫 동기화는 이미 실행 중입니다. 나머지 흐름이 읽는 두 필드만 남기면:
{
"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"
그 다음 아래 연결 해제에 설명된 대로 제공자 쪽에서 PlanetScale 자격 증명을 취소하세요.
연결 해제
연결을 해제하면 모든 동기화와 검사가 중단되고 Polylane이 보관하던 자격 증명이 삭제됩니다. Polylane은 PlanetScale의 API가 허용하는 범위에서 제거합니다. 다음은 직접 제거하기 전까지 남습니다:
- OAuth grant
polylane cloud disconnect <id>도구
2에이전트가 스레드에서 수행할 수 있는 작업입니다.
지원 리소스
2인프라 그래프에 표시되는 리소스 유형입니다.