データの場所
Durable Objectを特定の管轄に制限するか、場所のヒントを提供することができます。
Durable Objectsは、GDPR ↗やFedRAMP ↗などの地域の規制に準拠するために、特定の管轄内でのみ実行され、データを保存するように作成できます。
管轄を使用するには、まずWorkerのコード内に管轄サブネームスペースを作成します:
let subnamespace = OBJECT_NAMESPACE.jurisdiction('eu');管轄サブネームスペースは、通常のDurable Objectネームスペース(上記のOBJECT_NAMESPACE)のように機能しますが、その中で作成されたIDは、サブネームスペースを作成するために使用された管轄を永久にエンコードします。さらに、idFromString()およびget()メソッドは、渡されたIDがサブネームスペースの管轄内にない場合、例外をスローします。サブネームスペースを持つと、上記に文書化されたすべてのネームスペースメソッドを使用できます。
管轄内でのみ実行され、データを保持する新しいDurable Object IDを作成するには:
let id = subnamespace.newUniqueId();与えられた名前文字列から、管轄内でのみ実行され、データを保持するユニークなObject IDを導出するには:
let id = subnamespace.idFromName(name);文字列から以前に作成されたIDを解析するには:
let id = subnamespace.idFromString(id);Objectを取得するには:
let durableObjectStub = subnamespace.get(id)異なる管轄のIDをサブネームスペースのidFromString()またはget()メソッドで使用することはできませんが、トップレベルネームスペースのメソッドでは有効なIDを使用できます。管轄で作成されたObject IDsは、依然としてその管轄内でのみ実行され、データを保持します。
let id = subnamespace.idFromName(name);
// これは有効です。OBJECT_NAMESPACE.idFromString(id.toString())
// これも有効です。OBJECT_NAMESPACE.get(id)あなたのWorkersは、世界中のどこからでも管轄に制約されたDurable Objectsにアクセスできます。管轄の制約は、Durable Object自体が実行され、データを保持する場所を制御するだけです。地域サービスを使用して、Cloudflareがリクエストに応答する地域を制御することを検討してください。
現在サポートされている管轄はeu(欧州連合)とfedramp(FedRAMP)です。
Durable Objectsは、状態を持つAPIと同様に、リクエストがDurable Objectまたは状態が存在するデータセンターに転送される必要があるため、応答のレイテンシを追加することがよくあります。
Durable Objectsは、作成後に場所を変更することは現在できません1。デフォルトでは、Durable Objectは最初のget()リクエストが行われた場所に近いデータセンターでインスタンス化されます。これは、get()リクエストが行われたデータセンターとは異なる場合がありますが、ほとんどの場合、近くにあります。
場所のヒントは、Durable Objectがどこに存在すべきかを指定するために提供されるメカニズムです。これは、最初のget()リクエストがどこから来るかに関係なく適用されます。
別の場所にDurable Objectsを手動で作成するには、get()にオプションのlocationHintパラメータを提供します。特定のObjectに対する最初のget()呼び出しのみがヒントを尊重します。
let durableObjectStub = OBJECT_NAMESPACE.get(id, { locationHint: 'enam' });サポートされている場所は次のとおりです:
| 場所ヒントパラメータ | 場所 |
|---|---|
| wnam | 北米西部 |
| enam | 北米東部 |
| sam | 南米 |
| weur | 西ヨーロッパ |
| eeur | 東ヨーロッパ |
| apac | アジア太平洋 |
| oc | オセアニア |
| afr | アフリカ |
| me | 中東 |
1 既存のDurable Objectsの動的再配置は将来的に計画されています。