スナップショット
POST /v1/sandboxes/{id}/snapshots(glac sandboxes snapshots create web --name before-upgrade)は、サンドボックスを動かしたまま、ある時点のメモリ、プロセス、ディスクを保存します。スナップショットは name を持ち(replace を指定すると、今その名前を持っているスナップショットから名前を移します)、expires_at も持てます。
| 呼び出し | 内容 |
|---|---|
snapshot を付けた POST /v1/sandboxes |
スナップショットを取った時点から、プロセスが動いたまま続きを実行する新しいサンドボックス(glac sandboxes create --snapshot before-upgrade) |
POST /v1/sandboxes/{id}/restore |
その場でスナップショットに戻す。ID、名前、リンクは同じ。直前のサンドボックスの状態は別のスナップショットとして保持され、レスポンスでその名前が示されるため、巻き戻しを取り消せる(glac sandboxes restore web before-upgrade) |
GET /v1/snapshots, GET, DELETE /v1/snapshots/{id} |
プロジェクトのスナップショットの一覧、1 つの詳細、1 つの削除。そこから作ったサンドボックスは動き続ける |
PATCH /v1/snapshots/{id} {name?, expires_at?} |
別の名前(null ならなし)、または自動で削除される別の時刻(null なら削除しない):glac sandboxes snapshots rename before-upgrade old-state |
スナップショットは、取得後にリージョンのオブジェクトストアにコピーされます。replicated がその完了時刻を示し、それ以降はリージョン内のどのマシンでもそこからサンドボックスを作れます。それまでは取得したマシンでしか作れず、別のマシンを必要とする呼び出しは拒否されます(409 snapshot_not_replicated。コピーの進み具合が示されます)。
サンドボックスが読み書き可能で持つドライブは、スナップショットにバージョンとして含まれ、何もコピーされません。スナップショットから作ったサンドボックスは、同じパスに、その時点でドライブが保持していたものを持つ各ドライブのフォークを受け取り、ドライブ自体は最初のサンドボックスのままです。サンドボックスのスナップショットとドライブを参照してください。
snap = sbx.snapshot(name="before-upgrade")
sbx.run("rm -rf /srv/*") # something that goes wrong
sbx.restore(snap) # as it was before
other = glac.sandboxes.create(snapshot=snap) # another sandbox from the same momentフォーク
count(1〜64)を付けた POST /v1/sandboxes/{id}/fork は、その数のコピーを作ります。それぞれが専用のマシンで、元のメモリ、プロセス、ディスクを持ってこの時点から続きを実行します。すべて作られるか、何も作られないかのどちらかです。フォークは、コピー元のサンドボックスを復帰させます。
glac sandboxes fork web --count 3 # prints three idscopies = sbx.fork(3)
print([c.run("python3 -c 'import random; print(random.random())'").stdout for c in copies])
for c in copies:
c.delete()フォークは、作成されたサンドボックス(1 分間あたり、およびプロジェクトごとの 1 時間あたり)と稼働中のサンドボックスとして数えられます。制限を参照してください。
テンプレート
テンプレートとは、一度起動して保存したイメージで、メモリ、デバイス、ディスクを含みます。サンドボックスはそのコピーなので、テンプレートが起動したプログラムはどのサンドボックスでもすでに動いており、使うメモリは、サンドボックスが変更するまで共有されます。各イメージには、サイズごと、起動コマンドと準備完了のチェックごと、起動コマンドの環境ごとにテンプレートがあります。テンプレートは自動で作られ、料金はかかりません。
料金
スナップショットは、固有のバイト(固有のメモリページ、デバイスの状態、ディスクのレイヤー。テンプレートと共有している部分は含まない)で、保持されている間、1 GB-月あたり $0.02 で課金されます。無料プランのストレージ 15 GB と有料プランの 20 GB-月 には、スリープ中のサンドボックスやドライブとともにスナップショットも含まれます。料金とプランを参照してください。