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 ファイル内の [[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"] # 削除されたクラス名の配列