コンテンツにスキップ

Durable Objects マイグレーション

マイグレーションは、クラス名からランタイム状態へのマッピングプロセスです。

次のような場合にマイグレーションプロセスを開始する必要があります:

  • 新しい Durable Object クラスを作成する。
  • Durable Object クラスの名前を変更する。
  • Durable Object クラスを削除する。
  • 既存の Durable Objects クラスを転送する。

このプロセスは、Workers ランタイムに変更を通知し、それらの変更に対処する方法についての指示を提供します。

最も一般的に行われるマイグレーションは、新しいクラスのマイグレーションであり、これはランタイムに新しい Durable Object クラスがアップロードされていることを通知します。

マイグレーションは、2つの Durable Object クラス間で保存されたデータを転送するためにも使用できます:

  • 名前変更マイグレーションは、同じ Worker コードファイル内の2つの Durable Object クラス間で保存された Durable Objects を転送するために使用されます。
  • 転送マイグレーションは、異なる Worker コードファイル内の2つの Durable Object クラス間で保存された Durable Objects を転送するために使用されます。

名前変更または転送マイグレーションの宛先クラス(保存された Durable Objects が転送されるクラス)は、デプロイされた Worker によってエクスポートされている必要があります。

マイグレーションは、Durable Object クラスとその保存された Durable Objects を削除するためにも使用できます。

wrangler.toml における Durable Object マイグレーション

マイグレーションは、wrangler.toml ファイル内の [[migrations]] 構成キーを通じて実行されます。

マイグレーションには、各マイグレーションエントリ内の tag プロパティによって定義されるマイグレーションタグが必要です。

マイグレーションタグはユニークな名前として扱われ、すでに適用されたマイグレーションを特定するために使用されます。特定の Worker コードにマイグレーションタグが設定されると、すべての将来の Worker コードデプロイメントにはマイグレーションタグを含める必要があります。

マイグレーションリストは、wrangler.toml ファイル内のトップレベルキーとして指定された順序付きのテーブルの配列です。マイグレーションリストはすべての環境に継承され、特定の環境によってオーバーライドされることはありません。

すべてのマイグレーションはデプロイ時に適用されます。各マイグレーションは、環境ごとに1回だけ適用できます。

マイグレーションワークフローの例を示すために、DurableObjectExample クラスは次のように最初に定義できます:

[[migrations]]
tag = "v1" # 各エントリに対してユニークである必要があります
new_classes = ["DurableObjectExample"] # 新しいクラスの配列

リスト内の各マイグレーションには複数のディレクティブを持たせることができ、プロジェクトが複雑になるにつれて複数のマイグレーションを指定できます。たとえば、DurableObjectExample クラスの名前を UpdatedName に変更し、古い DeprecatedClass を完全に削除したい場合があります。

[[migrations]]
tag = "v1" # 各エントリに対してユニークである必要があります
new_classes = ["DurableObjectExample"] # 新しいクラスの配列
[[migrations]]
tag = "v2"
renamed_classes = [{from = "DurableObjectExample", to = "UpdatedName" }] # 名前変更ディレクティブの配列
deleted_classes = ["DeprecatedClass"] # 削除されたクラス名の配列