Skip to main content
Snapshot は、アプリまたはデータベースのストレージのバックアップです。アプリとデータベースは同じ 3 つのメソッドを共有しています:
  • c.Apps.Snapshots: List(ctx, appID)、Create(ctx, appID)、Restore(ctx, appID, name, versionID)
  • c.Databases.Snapshots: List(ctx, databaseID)、Create(ctx, databaseID)、Restore(ctx, databaseID, name, versionID)
1 日に作成できる snapshot の数はプランによって異なります (制限を参照)。 以下の各スニペットは、このプログラムの中で単独で動作します。1 つずつ main に貼り付けて goimports を実行してください (サンプルの実行を参照)。

Snapshot の一覧

Snapshot の作成

Create は snapshot の完了を待ちます (ctx に期限がない場合、タイムアウトまで最低 2 分)。大きな snapshot は時間内に完了しないことがあります。その場合 API は 202 を返し、SDK は Pending が true の SnapshotCreated と nil のエラーを返します。Snapshot の生成は続き、通常 2 分以内に自動的に List に表示されます。
保留中の snapshot を確認するために Create を再度呼び出さないでください。新しい snapshot が開始され、プランの 1 日あたりの snapshot クォータを消費します。代わりに List をポーリングしてください。

Snapshot の復元

Restore(ctx, id, name, versionID) は、一覧に表示された snapshot の Name と VersionID を受け取ります。

Snapshot のダウンロード

c.DownloadSnapshot(ctx, url, w) は、署名付きの url (List または Create から取得) から snapshot ファイルを任意の io.Writer にストリーミングします。API は呼び出しません。API キーがストレージホストに送信されることはなく、URL が返されるエラーに含まれることもありません。メモリには何もバッファされず、デフォルトの期限もありません (ctx で期限を設けるかキャンセルしてください)。レスポンス前のネットワークエラーは、通常の GET と同様にリトライされます。
期限切れまたは無効な URL は、ストレージホストの HTTP ステータスと UNKNOWN_ERROR を持つ *APIError を返します。解析できない URL と、あなたの io.Writer のエラーは、通常のエラーとして返されます。

アカウントの snapshot

c.Account.Snapshots(ctx, scope) はアカウントのすべての snapshot を一覧します。すべてを対象にするには "" を、または squarecloud.SnapshotScopeApplications か squarecloud.SnapshotScopeDatabases を渡します。アクティブなプランが必要で、ネットワークの endpoint とレート制限を共有します (429 RATE_LIMITED)。

制限

  • Create は 180 秒に 1 回、かつプランに応じた 1 日あたりのクォータまでに制限されています。クォータを超えると 429 DAILY_SNAPSHOTS_LIMIT_REACHED になります。
  • 復元の実行中にアプリを削除したりデータベースを起動したりすると、403 RESTORE_IN_PROGRESS になります。

次のステップ

データベース

データベースを作成して管理します。

Snapshot API リファレンス

これらのメソッドが呼び出す REST endpoint。

CLI で snapshot を操作

同じ操作をターミナルから行います。