Skip to content

Commit 94da6c6

Browse files
simonha9vy-ton
andauthored
Update data-location to include jurisdiction (#26220)
--------- Co-authored-by: Vy Ton <[email protected]>
1 parent 40c0ab4 commit 94da6c6

File tree

3 files changed

+82
-6
lines changed

3 files changed

+82
-6
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
title: D1 can restrict data localization with jurisdictions
3+
description: A D1 database can set a jurisdiction at creation, which limits the location to run and store the database.
4+
products:
5+
- d1
6+
- workers
7+
date: 2025-10-05
8+
---
9+
10+
You can now set a [jurisdiction](/d1/configuration/data-location/) when creating a D1 database to guarantee where your database runs and stores data. Jurisdictions can help you comply with data localization regulations such as GDPR. Supported jurisdictions include `eu` and `fedramp`.
11+
12+
A jurisdiction can only be set at database creation time via wrangler, REST API or the UI and cannot be added/updated after the database already exists.
13+
14+
```sh
15+
npx wrangler@latest d1 create db-with-jurisdiction --jurisdiction eu
16+
```
17+
18+
```
19+
curl -X POST "https://api.cloudflare.com/client/v4/accounts/<account_id>/d1/database" \
20+
-H "Authorization: Bearer $TOKEN" \
21+
-H "Content-Type: application/json" \
22+
--data '{"name": "db-wth-jurisdiction", "jurisdiction": "eu" }'
23+
```
24+
25+
To learn more, visit D1's data location [documentation](/d1/configuration/data-location/).

src/content/docs/d1/configuration/data-location.mdx

Lines changed: 52 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,55 @@ sidebar:
77

88
import { DashButton } from "~/components";
99

10-
Learn how the location of data stored in D1 is determined, including where the leader is placed and how you optimize that location based on your needs.
10+
Learn how the location of data stored in D1 is determined, including where the database runs and how you optimize that location based on your needs.
1111

1212
## Automatic (recommended)
1313

1414
By default, D1 will automatically create your primary database instance in a location close to where you issued the request to create a database. In most cases this allows D1 to choose the optimal location for your database on your behalf.
1515

16+
## Restrict database to a jurisdiction
17+
18+
Jurisdictions are used to create D1 databases that only run and store data within a region to help comply with data locality regulations such as the [GDPR](https://gdpr-info.eu/) or [FedRAMP](https://blog.cloudflare.com/cloudflare-achieves-fedramp-authorization/).
19+
20+
Workers may still access the database constrained to a jurisdiction from anywhere in the world. The jurisdiction constraint only controls where the database itself runs and persists data. Consider using [Regional Services](/data-localization/regional-services/) to control the regions from which Cloudflare responds to requests.
21+
22+
:::note
23+
24+
Jurisdictions can only be set on database creation and cannot be added or updated after the database exists. If a jurisdiction and a location hint are both provided, the jurisdiction takes precedence and the location hint is ignored.
25+
:::
26+
27+
### Supported jurisdictions
28+
29+
| Parameter | Location |
30+
| --------- | ------------------------------ |
31+
| eu | The European Union |
32+
| fedramp | FedRAMP-compliant data centers |
33+
34+
### Use the dashboard
35+
36+
1. In the Cloudflare dashboard, go to the **D1 SQL Database** page.
37+
38+
<DashButton url="/?to=/:account/workers/d1" />
39+
40+
2. Select **Create Database**.
41+
3. Under **Data location**, select **Specify jurisdiction** and choose a jurisdiction from the list.
42+
4. Select **Create** to create your database.
43+
44+
### Use wrangler
45+
46+
```sh
47+
npx wrangler@latest d1 create db-with-jurisdiction --jurisdiction=eu
48+
```
49+
50+
### Use REST API
51+
52+
```curl
53+
curl -X POST "https://api.cloudflare.com/client/v4/accounts/<account_id>/d1/database" \
54+
-H "Authorization: Bearer $TOKENn" \
55+
-H "Content-Type: application/json" \
56+
--data '{"name": "db-wth-jurisdiction", "jurisdiction": "eu" }'
57+
```
58+
1659
## Provide a location hint
1760

1861
Location hint is an optional parameter you can provide to indicate your desired geographical location for your primary database instance.
@@ -32,10 +75,10 @@ Provide a location hint when creating a D1 database when:
3275
Providing a location hint does not guarantee that D1 runs in your preferred location. Instead, it will run in the nearest possible location (by latency) to your preference.
3376
:::
3477

35-
### Use Wrangler
78+
### Use wrangler
3679

3780
:::note
38-
To install Wrangler, the command-line interface for D1 and Workers, refer to [Install and Update Wrangler](/workers/wrangler/install-and-update/).
81+
To install wrangler, the command-line interface for D1 and Workers, refer to [Install and Update Wrangler](/workers/wrangler/install-and-update/).
3982
:::
4083

4184
To provide a location hint when creating a new database, pass the `--location` flag with a valid location hint:
@@ -48,14 +91,15 @@ wrangler d1 create new-database --location=weur
4891

4992
To provide a location hint when creating a database via the dashboard:
5093

51-
1. In the Cloudflare dashboard, go to the **D1** page.
94+
1. In the Cloudflare dashboard, go to the **D1 SQL Database** page.
5295

5396
<DashButton url="/?to=/:account/workers/d1" />
97+
5498
2. Select **Create database**.
5599
3. Provide a database name and an optional **Location**.
56100
4. Select **Create** to create your database.
57101

58-
## Available location hints
102+
### Available location hints
59103

60104
D1 supports the following location hints:
61105

@@ -78,4 +122,6 @@ With read replication enabled, D1 creates and distributes read-only copies of th
78122

79123
When using D1 read replication, D1 automatically creates a read replica in [every available region](/d1/configuration/data-location#available-location-hints), including the region where the primary database instance is located.
80124

81-
Refer to [D1 read replication](/d1/best-practices/read-replication/) for more information.
125+
If a jurisdiction is configured, read replicas are only created within the jurisdiction set on database creation.
126+
127+
Refer to [D1 read replication](/d1/best-practices/read-replication/) for more information.

src/content/release-notes/d1.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ link: "/d1/platform/release-notes/"
33
productName: D1
44
productLink: "/d1/"
55
entries:
6+
- publish_date: "2025-10-05"
7+
title: D1 can configure jurisdictions for data localization
8+
description: |-
9+
You can now set a [jurisdiction](/d1/configuration/data-location/) when creating a D1 database to guarantee where your database runs and stores data.
10+
611
- publish_date: "2025-09-11"
712
title: D1 automatically retries read-only queries
813
description: |-

0 commit comments

Comments
 (0)