🎃
TiDB Cloud : Cloud API を使った クラスター操作
前回こちらの記事でTiDB Cloud の IAM APIを使ってクラスータの操作やデータエクスポート、インポートなどを行える API Key の発行を行いました。
今日はその続きとして実際に発行されたAPI Keyを用いてCloud APIを使ってみます。
TiDB Cloud API
API諸元はこちらで定義されておりswaggerファイルが配布されています。
Starterクラスターだと以下の操作が可能なようです。
(前回の記事執筆時点から少し変更が入っています)

さっそくやってみる
1. IAM API を用いた API Key の発行
では前回の記事の内容に基づきIAM APIを用いてAPI Keyを発行します。
発行の際権限はorg:ownerとします。
curl -X POST --digest -u "$TIDB_CLOUD_PUBLIC_KEY:$TIDB_CLOUD_PRIVATE_KEY" -H "Content-Type: application/json" "https://iam.tidbapi.com/v1beta1/apikeys" -d '{
"displayName": "demo-api-key-org-owner",
"role": "org:owner"
}' | jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 256 100 182 100 74 73 29 0:00:02 0:00:02 --:--:-- 261
{
"name": "orgs/1372813089209216952/apiKeys/563416",
"accessKey": "S2L95J80",
"secretKey": "xxxx603d-9cfe-49cd-8f55-703f8c420eyy",
"displayName": "demo-api-key-org-owner",
"role": "org:owner"
}
2.プロジェクト一覧の操作
まずは発行されたキーを環境変数にセットします。
export TIDB_CLOUD_PUBLIC_KEY="S2L95J80"
export TIDB_CLOUD_PRIVATE_KEY="xxxx603d-9cfe-49cd-8f55-703f8c420eyy"
export PROJECT_ID="1372813089454531804"
次に以下のコマンドを実行します。
curl --digest \
--user "$TIDB_CLOUD_PUBLIC_KEY:$TIDB_CLOUD_PRIVATE_KEY" \
--request GET \
--url "https://api.tidbcloud.com/api/v1beta/projects?page=1&page_size=10"
以下の様に現存しているプロジェクト情報が出力されます。
{
"items": [
{
"id": "1372813089454531804",
"orgId": "1372813089209216952",
"name": "default project",
"clusterCount": 3,
"userCount": 1,
"createTimestamp": "1703216244",
"awsCmekEnabled": false
}
],
"total": 1
}
3.Clusterの起動
ではClusterを起動してみます。
curl --digest \
--user "$TIDB_CLOUD_PUBLIC_KEY:$TIDB_CLOUD_PRIVATE_KEY" \
--request POST \
--url "https://api.tidbcloud.com/api/v1beta/projects/$PROJECT_ID/clusters" \
--header "Content-Type: application/json" \
--data '{
"name": "starter-cluster-01",
"cluster_type": "DEVELOPER",
"cloud_provider": "AWS",
"region": "us-west-2",
"config": {
"root_password": "StrongPassw0rd!",
"ip_access_list": [
{
"cidr": "0.0.0.0/0",
"description": "Allow access from anywhere"
}
]
}
}'
無事Clusterが作成されました。

レスポンスとしてClusterのIDが戻っています。
{"id":"10659925523860644884"}
4.Clusterの削除
では最後にClusterの削除を行います。
curl --digest \
--user "$TIDB_CLOUD_PUBLIC_KEY:$TIDB_CLOUD_PRIVATE_KEY" \
--request DELETE \
--url "https://api.tidbcloud.com/api/v1beta/projects/$PROJECT_ID/clusters/$CLUSTER_ID"
<$CLUSTER_ID>は先ほどレスポンスで出力されたCluster IDに置き換えてください。
コンソールから見ると先ほど作成されたClusterが消えています。
最後に
Starterですと機能が限定されていますが、先日操作可能となったEssentialであればバックアップやリストア、データインポートエクスポートなどがサポートされているようですのでまた試したいと思います。
Discussion