データベースは、rest.Rest に埋め込まれた Databases インターフェースによって公開されます。Standard、Pro、Enterprise プランで利用できます。
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()
api := rest.New(client)
データベースの作成
api.CreateDatabase(opts) は、squarecloud.DatabaseCreateOptions から新しいデータベースをプロビジョニングします。
created, err := api.CreateDatabase(squarecloud.DatabaseCreateOptions{
Name: "my-mongo",
Memory: 1024,
Type: squarecloud.DatabaseTypeMongo,
Version: "8",
})
if err != nil {
panic(err)
}
fmt.Println(created.ID)
fmt.Println(created.ConnectionURL) // そのまま使える — パスワードは埋め込み済み
fmt.Println(created.Password) // 一度だけ表示される — 安全に保存すること
fmt.Println(created.Certificate) // 一度だけ表示される — TLS証明書を発行するエンジンにのみ存在
| Field | Type | Description |
|---|
Name | string | 表示名、1–32 文字 |
Memory | int | 割り当てるメモリ (MB) |
Type | squarecloud.DatabaseType | エンジン: DatabaseTypeMongo、DatabaseTypeMySQL、DatabaseTypeRedis または DatabaseTypePostgres(スラッグは mongo、mysql、redis、postgres) |
Version | string | エンジンバージョン |
Password(および該当する場合は Certificate)は 作成時のレスポンスにのみ 含まれ、後から復元することはできません — 今すぐ保存してください。ConnectionURL はパスワード埋め込み済みで、そのまま使えます。
サポートされていないタイプは INVALID_DATABASE_TYPE で失敗します。プランに対してメモリが少なすぎる場合は INSUFFICIENT_MEMORY で失敗します。プロビジョニング中の失敗は DATABASE_CREATION_FAILED で失敗します。
データベースの一覧取得
api.GetDatabases() は、所有するすべてのデータベースをコンパクトな squarecloud.UserDatabase ディスクリプタとして一覧取得します:
dbs, err := api.GetDatabases()
if err != nil {
panic(err)
}
for _, db := range dbs {
fmt.Printf("%s (%s)\n", db.Name, db.ID)
}
単一のデータベースの取得
db, err := api.GetDatabase("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println(db.ID, db.Name, db.Type, db.RAM, db.Cluster, db.CreatedAt)
ライフサイクル
err := api.StartDatabase("abc123def456abc123def456")
if err != nil {
panic(err)
}
err = api.StopDatabase("abc123def456abc123def456")
ステータスとメトリクス
データベースのステータスとメトリクスのエンドポイントは、アプリケーションのものと同じ形を共有しています(型エイリアスです)— フィールドごとの詳細は アプリケーションの管理 を参照してください。
status, err := api.GetDatabaseStatus("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println(status.Status, status.CPU, status.RAM) // フォーマット済み文字列
raw, err := api.GetDatabaseStatusRaw("abc123def456abc123def456") // 数値
if err != nil {
panic(err)
}
metrics, err := api.GetDatabaseMetrics("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println(len(metrics), "metric points (up to 288 over 24h)")
すべてのデータベースの概要ステータス
list, err := api.GetDatabaseListStatus()
if err != nil {
panic(err)
}
for _, summary := range list {
fmt.Printf("%s → running=%v\n", summary.ID, summary.Running)
}
api.UpdateDatabase(dbID, opts) は、表示名やメモリ割り当てを変更します。少なくとも 1 つのフィールドを指定する必要があります。
err := api.UpdateDatabase("abc123def456abc123def456", squarecloud.DatabaseUpdateOptions{
Name: "primary-db",
RAM: 1024,
})
if err != nil {
panic(err)
}
認証情報
api.GetDatabaseCertificate(dbID) は TLS 証明書(base64 エンコードされた PEM)を返します:
cert, err := api.GetDatabaseCertificate("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println("certificate length:", len(cert))
api.ResetDatabaseCredentials(dbID, reset) は、squarecloud.DatabaseReset* 定数を使って、パスワードまたは証明書のいずれかをローテーションします:
// パスワードをローテーションする — 新しい値は一度だけ表示される
result, err := api.ResetDatabaseCredentials("abc123def456abc123def456", squarecloud.DatabaseResetPassword)
if err != nil {
panic(err)
}
fmt.Println("new password:", result.Password)
// 証明書をローテーションする — 新しいものは GetDatabaseCertificate で取得する
_, err = api.ResetDatabaseCredentials("abc123def456abc123def456", squarecloud.DatabaseResetCertificate)
新しいパスワードは パスワードリセットのレスポンスでのみ 返され、一度しか表示されません — すぐに保存してください。
Snapshots
データベースの snapshot は、アプリケーションの snapshot API をミラーリングします — Snapshots を参照してください。
snapshots, err := api.GetDatabaseSnapshots("abc123def456abc123def456")
if err != nil {
panic(err)
}
created, err := api.CreateDatabaseSnapshot("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println("download URL:", created.URL)
データベースの削除
データベースの削除は取り消せません。データを復元する必要があるかもしれない場合は、最新の snapshot があることを確認してください。
err := api.DeleteDatabase("abc123def456abc123def456")
if err != nil {
panic(err)
}