Hi all, hoping someone who's been through this can sanity-check our approach before we provision more infrastructure.
What we're trying to do
We have 10+ existing production dashboards on Tableau Cloud that currently point at a publicly-accessible Redshift cluster. We're migrating them to a new Redshift cluster that sits inside a private AWS VPC. The dashboards have to stay exactly as they are - same layout, calcs, filters. Rebuilding from scratch isn't an option at the moment.
What's working
Bridge is set up and healthy:
- Dedicated pool created (not the default pool), status Ready
- Bridge client installed on an EC2 inside the VPC, connected, assigned to the pool
- Redshift host in the Private Network Allowlist, mapped to that pool
- Security group on the cluster allows 5439 from the Bridge instance
- Credentials verified ā can browse schemas and tables through the connection
Changing the connection and creating an extract from within the Tableau Cloud workbook editor works fine, and the job details confirm it routed through Bridge.
What's failing
Every scheduled or manual extract refresh fails with:
This server violates the ip allowlist/blocklist restrictions
Unable to connect to the Amazon Redshift server "<our-cluster>.<our-region>.redshift.amazonaws.com"
We tried deleting and recreating the schedule, reassigning the Bridge client to the pool, and reverifying the allowlist mapping. Same result every time.
What we think is going on
From the Limitations section of the embedded data sources doc (
help.tableau.com/current/online/en-us/to_bridge_eds.htm), workbooks published via the REST API or uploaded through the Tableau Cloud web interface don't support Bridge refreshes when data sources are embedded. Ours was published using "Publish As" from web authoring, so we think that's the cause. The documented workarounds are to publish from Tableau Desktop, or publish the data source separately and connect the workbook to it.
Where we've got stuck
We hit three walls trying to follow those workarounds:
- Repointing an existing workbook to a published data source is a Replace Data Source operation, and per the docs that's Tableau Desktop only, not available in Tableau Cloud.
- We can't publish one of our two data sources separately (for one of our workbooks but there are some other as well in similar structure) anyway, Desktop greys it out with "Data sources with calculations that reference other data sources must be embedded."
- We installed Tableau Desktop and the Amazon Redshift ODBC 2.x driver locally and tried connecting directly. It times out. An nslookup shows the hostname resolves to a private IP via a VPC endpoint, so the cluster genuinely isn't reachable from outside the VPC. No firewall or SG change fixes that, if I am not wrong.
Our workbook is also 63 MB, over the 50 MB web upload limit, so uploading through the web UI isn't an option regardless.
Questions
- Has anyone confirmed that publishing a workbook from Tableau Desktop actually resolves the embedded-data-source Bridge refresh issue when the source is in a private VPC specifically? The docs say it should, but we haven't validated it end-to-end yet and don't want to build infrastructure on an assumption.
- Is running Tableau Desktop on a VM inside the VPC the normal approach for this, or is there a cleaner pattern we're missing?
- Is there any supported way to repoint an existing workbook from an embedded data source to a published data source without Desktop?
- More generally, if you've migrated a set of existing workbooks to a private VPC data source, what did your process actually look like? Trying to settle on the right pattern before repeating it 10+ times.
Happy to share more detail if useful. Thanks in advance.
#Tableau Cloud
@DIEGO FERNANDO MARTINEZ RODRIGUEZ
Hi Diego, thanks very much for the detailed reply, especially the explanation of why embedded data sources are slower. That matches Tableau's own documentation about the extract being written on the Tableau Cloud server rather than on the Bridge client, and it explains the error we're seeing perfectly.
Going through your checklist -- we'd already covered most of it, and tested your two new suggestions today:
a. Bridge client shows Connected, pool status Ready.
b. The Redshift hostname is in the Private Network Allowlist and mapped to our Bridge pool. Good tip on the IP, we hadn't tried that. Our hostname resolves to a private IP via a VPC endpoint, so we added that IP to the allowlist as well, mapped to the same pool. Refresh still failed with the identical error:
This server violates the ip allowlist/blocklist restrictionsUnable to connect to the Amazon Redshift server "<our-cluster>.<our-region>.redshift.amazonaws.com"
c. Verified outbound 80/443 from the Bridge client to Tableau Cloud, all open and working. Our Bridge client runs on Linux so the Service mode point doesn't apply to us.
d. We created a published data source via Explore > New > Data Source and it connected to Redshift successfully, which confirms Bridge itself is working end to end.
e, f, g. Edited the workbook connection to the correct hostname, deleted and recreated all schedules, ran a refresh. Same failure.
So we agree published data sources are the right answer. Where we're genuinely stuck is getting our existing workbooks onto them, and I'd really value your view on three things:
- Our workbook has two embedded data sources. One of them can't be published separately at all ā Tableau Desktop greys out the option with "Data sources with calculations that reference other data sources must be embedded." Is there a way around that, or does it mean this workbook is permanently locked to embedded data sources?
- Repointing an existing workbook to a published data source is a Replace Data Source operation, which per the docs is Tableau Desktop only. Our Redshift cluster is private-only and resolves to an internal IP through a VPC endpoint, so Desktop on our laptops can't reach it at all. Is running Tableau Desktop on a VM inside the VPC the normal approach here, or is there a cleaner pattern we're missing?
- Our workbook is 63 MB, over the 50 MB web upload limit, so uploading through the web UI isn't an option either.
- One more thing, our Bridge client runs on Linux (in a container) rather than Windows. Does the embedded data source limitation behave any differently on Linux Bridge, or is it identical? And since Tableau Desktop doesn't run on Linux, does that mean anyone using Linux Bridge necessarily needs a separate Windows or Mac machine inside the network for the publishing step? Wondering if there's a Linux-friendly workflow we're not aware of, or whether Linux Bridge deployments just accept that constraint.
We have 10+ dashboards to migrate and they need to stay exactly as they are since they're business-facing, so rebuilding from scratch isn't viable. Any guidance on the right pattern would be hugely appreciated.
Happy to mark this as the accepted answer once we've got a working solution, just want to make sure the thread lands on something that actually resolves it, in case anyone else hits the same wall.
Thanks again for taking the time to reply.