You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/best-practices/cost-optimization.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -62,7 +62,7 @@ See [Spooky Stories: Chilling Temporal Anti-Patterns](https://temporal.io/blog/s
62
62
### Large payloads in Workflow History
63
63
64
64
Passing multi-megabyte payloads through Workflows when external storage (S3, blob storage) is more appropriate.
65
-
Use [compression](/troubleshooting/blob-size-limit-error#why-does-this-error-occur) or the [claim check pattern](https://dataengineering.wiki/Concepts/Software+Engineering/Claim+Check+Pattern) for large data.
65
+
Use [compression](/troubleshooting/blob-size-limit-error#payload-size-limit) or the [claim check pattern](https://dataengineering.wiki/Concepts/Software+Engineering/Claim+Check+Pattern) for large data.
66
66
67
67
### Over-optimization at the expense of observability
Copy file name to clipboardExpand all lines: docs/cloud/capacity-modes.mdx
-6Lines changed: 0 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -133,12 +133,6 @@ This means that your default limit would be 800 APS.
133
133
134
134
## Provisioned Capacity {#provisioned-capacity}
135
135
136
-
:::tip Support, stability, and dependency info
137
-
138
-
Provisioned Capacity is currently in [Public Preview](/evaluate/development-production-features/release-stages#public-preview).
139
-
140
-
:::
141
-
142
136
Provisioned Capacity provides an alternative to On-Demand Capacity by allowing you to control the limits on your Namespace based on your specific need.
143
137
144
138
|| Actions Per Second | Requests Per Second | Operations Per Second|
A Route 53 private hosted zone with no records causes DNS resolution to fail (NXDOMAIN) inside any associated VPC. If you create an empty PHZ for `<account>.tmprl.cloud` and associate it with a VPC where Workers are running, **all Worker traffic to Temporal Cloud in that VPC stops** until you add the CNAME record. Follow the steps below in order to avoid this.
121
+
122
+
:::
123
+
119
124
#### 1. Collect your PrivateLink endpoint DNS name
|**Record name**| the namespace endpoint (e.g., `payments.abcde.tmprl.cloud`). |
152
+
|**Record name**| the Namespace Endpoint (e.g., `payments.abcde.tmprl.cloud`). |
148
153
|**Record type**|`CNAME`|
149
154
|**Value**| Your VPC Endpoint DNS name (`vpce-0123456789abcdef-abc.us-east-1.vpce.amazonaws.com`) |
150
-
|**TTL**| 60s is typical; 15s for MRN namespaces; adjust as needed. |
155
+
|**TTL**| 60s is typical; 15s for Namespaces with High Availability (to minimize recovery time after failover). |
156
+
157
+
#### 4. Associate the PHZ with your Worker VPCs and verify
151
158
152
-
#### 4. Verify DNS resolution from inside the VPC
159
+
Now that the record exists, associate the PHZ with every VPC that contains Temporal Workers or SDK clients (Route 53 → your zone → _Edit settings_ → _Add VPC_).
160
+
161
+
:::tip Test with a non-production VPC first
162
+
163
+
We strongly recommend that you test with a non-production VPC first. Attach the PHZ to a non-production VPC, validate end-to-end resolution and connectivity from a host in that VPC, and only then attach production Worker VPCs. This catches misconfigured records before they affect production traffic.
164
+
165
+
:::
166
+
167
+
Verify DNS resolution from inside one of the associated VPCs:
The DNS resolver inside your VPC returns the private endpoint, while TLS still validates the original hostname—simplifying both code and certificate management.
173
188
174
-
## Configure Private DNS for Multi-Region Namespaces
175
-
176
-
:::tip Namespaces with High Availability features and AWS PrivateLink
177
-
178
-
Proper networking configuration is required for failover to be transparent to clients and workers when using PrivateLink.
179
-
This page describes how to configure routing for Namespaces with High Availability features on AWS PrivateLink.
180
-
181
-
:::
182
-
183
-
To use AWS PrivateLink with High Availability features, you may need to:
184
-
185
-
- Override the regional DNS zone.
186
-
- Ensure network connectivity between the two regions.
187
-
188
-
This page provides the details you need to set this up.
189
+
## Configure private DNS for Namespaces with High Availability
189
190
190
-
### Customer side solutions
191
+
For Namespaces with [High Availability features](/cloud/high-availability), you need to override DNS for `region.tmprl.cloud` so each region resolves to the local VPC Endpoint, and you need to ensure Workers can reach whichever region is active. Failover is transparent to clients only when this is set up correctly.
191
192
192
-
When using PrivateLink, you connect to Temporal Cloud through a VPC Endpoint, which uses addresses local to your network.
193
-
Temporal treats each `region.<tmprl_domain>` as a separate zone.
194
-
This setup allows you to override the default zone, ensuring that traffic is routed internally for the regions you’re using.
195
-
196
-
A Namespace's active region is reflected in the target of a CNAME record.
197
-
For example, if the active region of a Namespace is AWS us-west-2, the DNS configuration would look like this:
To set up the DNS override, configure specific regions to target the internal VPC Endpoint IP addresses.
220
-
For example, you might set aws-us-west-1.region.tmprl.cloud to target 192.168.1.2.
221
-
In AWS, this can be done using a Route 53 private hosted zone for `region.tmprl.cloud`.
222
-
Link that private zone to the VPCs you use for Workers.
223
-
224
-
When your Workers connect to the Namespace, they first resolve the `<ns>.<acct>.<tmprl_domain>` record.
225
-
This points to `<aws-active-region>.region.tmprl.cloud`, which then resolves to your internal IP addresses.
226
-
227
-
Consider how you’ll configure Workers for this setup.
228
-
You can either have Workers run in both regions continuously or establish connectivity between regions using Transit Gateway or VPC Peering.
229
-
This way, Workers can access the newly activated region once failover occurs.
193
+
The complete guidance — including single-cloud (AWS-only) HA, multi-cloud HA (AWS PrivateLink + GCP Private Service Connect), and a recommended failover-testing plan — lives on a single page: [Connectivity for High Availability](/cloud/high-availability/ha-connectivity).
230
194
231
195
## Direct VPCE targeting without per-Namespace DNS {#direct-vpce}
232
196
@@ -248,6 +212,22 @@ For HA Namespaces, use [private DNS](#configuring-private-dns-for-aws-privatelin
248
212
249
213
:::
250
214
215
+
## Adding PrivateLink from additional AWS accounts
216
+
217
+
A common pattern is to have separate AWS accounts for different lines of business, environments (staging, production), or compliance scopes (PCI vs non-PCI), each with its own VPC and Workers connecting to the same Temporal Cloud account.
218
+
219
+
You can create as many AWS PrivateLink VPC endpoints as you need to the same Temporal Cloud regional service — there is nothing to register, approve, or open a ticket for on the Temporal side.
220
+
221
+
For each additional AWS account or VPC:
222
+
223
+
1. In that account, create the AWS PrivateLink VPC endpoint targeting the regional service name from the [regions table](#available-aws-regions-privatelink-endpoints-and-dns-record-overrides) — same as in the [creation steps](#creating-an-aws-privatelink-connection) above.
224
+
2. Configure DNS in that VPC. You have two options:
225
+
- Create a Route 53 Private Hosted Zone in that account scoped to the appropriate VPC(s), following the [private DNS steps](#configuring-private-dns-for-aws-privatelink) above. Each VPC's PHZ should point at the VPC Endpoint local to that VPC.
226
+
- Or, use [direct VPCE targeting](#direct-vpce) (single-region Namespaces only).
227
+
3.**Optional:** if you want to enforce private-only access for a Namespace, add a Connectivity Rule for each VPC endpoint and attach all of them (plus a public rule, if needed) to the Namespace. See [Connectivity Rules](/cloud/connectivity#connectivity-rules).
228
+
229
+
There is no upper limit on the number of VPC endpoints you can connect from your side to a regional PrivateLink service. The default per-account limit on private Connectivity Rules is 50 — [contact support](/cloud/support#support-ticket) if you need to raise it.
230
+
251
231
## Available AWS regions, PrivateLink endpoints, and DNS record overrides
252
232
253
233
The following table lists the available Temporal regions, PrivateLink endpoints, and regional endpoints used for DNS record overrides:
Copy file name to clipboardExpand all lines: docs/cloud/connectivity/gcp-connectivity.mdx
+12-8Lines changed: 12 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -73,21 +73,25 @@ Individual Namespaces do not use separate services.
73
73
- For **IP address**, click the dropdown and select **Create IP address** to create an internal IP from your subnet dedicated to the endpoint. Select this IP.
74
74
- Check **Enable global access** if you intend to connect the endpoint to virtual machines outside of the selected region. We recommend regional connectivity instead of global access, as it can be better in terms of latency for your workers. _**Note:** this requires the network routing mode to be set to **GLOBAL**._
75
75
76
-
5. Click the **Add endpoint** button at the bottom of the screen.
76
+
5. Click the **Add endpoint** button at the bottom of the screen. The endpoint will appear with status **Pending**. This is expected — the next step is what flips it to **Accepted**.
77
77
78
-
6.[Create a Temporal Cloud Connectivity Rule](/cloud/connectivity#creating-a-connectivity-rule) using the Connection ID of the newly created endpoint and the corresponding GCP Project.
78
+
6.[Create a Temporal Cloud Connectivity Rule](/cloud/connectivity#creating-a-connectivity-rule) using the Connection ID of the newly created endpoint and the corresponding GCP project. Use the **Connection ID** from the endpoint's detail page in the Google Cloud console (a numeric string such as `1234567890123456789`).
79
79
80
-
7. Once the status is "Accepted", the GCP Private Service Connect endpoint is ready for use.
80
+
7. Once the status changes from "Pending" to "Accepted", the GCP Private Service Connect endpoint is ready for use.
81
81
82
-
:::tip Connectivity Rule required
82
+
:::warning PSC stays "Pending" until you create a Connectivity Rule
83
83
84
-
If your Private Service Connect connection status is not becoming "Active", verify that you have [created a Connectivity Rule](/cloud/connectivity#creating-a-connectivity-rule).
85
-
Connectivity Rules are mandatory for GCP Private Service Connect connections.
86
-
The connection will not become active without one.
84
+
For GCP Private Service Connect, the Connectivity Rule is what tells Temporal Cloud to accept your PSC connection. Until you [create a Connectivity Rule](/cloud/connectivity#creating-a-connectivity-rule) for the connection, the endpoint will remain in **Pending**. There is no separate producer-side approval step — creating the Connectivity Rule is the approval.
85
+
86
+
If your endpoint is stuck Pending, the most common causes are:
87
+
88
+
- No Connectivity Rule exists for the connection ID. (Most common.)
89
+
- The Connectivity Rule was created with the wrong `connection-id`, `region`, or `gcp-project-id`.
90
+
- The endpoint is in a region that is not a [supported Temporal Cloud region](/cloud/regions).
87
91
88
92
:::
89
93
90
-
- Take note of the **IP address**that has been assigned to your endpoint, as it will be used to connect to Temporal Cloud.
94
+
- Take note of the **IP address** assigned to your endpoint — you will use it to connect to Temporal Cloud.
91
95
92
96
:::caution
93
97
You still need to set up private DNS or override client configuration for your clients to actually use the new Private Service Connect connection to connect to Temporal Cloud.
0 commit comments