"PrivateLink," "Private Link," and "Private Service Connect" all promise the same thing: reach a service in another VPC, account, or tenant without the public internet and without full VPC peering. The mechanism behind that promise is nearly identical across all three clouds — an interface object in your own subnet, paired with an internal software-defined fabric that does the real work of stitching networks together. Where they genuinely diverge is in the operational details below.
IGW, NAT Gateway, or the public internet at any point in this path.Peering is route-table-based and pairwise. Every VPC that needs to reach every other VPC needs its own peering connection, and peering doesn't transit — if A peers with B, and B peers with C, A still can't reach C. At scale this becomes a full mesh you have to build and maintain by hand.
N networks → up to N(N−1)/2 connectionsBecause there's no routing relationship — just an interface endpoint resolving to a service — thousands of consumer VPCs can reach one provider service with zero peering connections and zero route table entries. The provider scales out the service; consumers just point at it.
N consumers → 1 service attachmentSecurity groups on the endpoint ENI and on the NLB target are both enforced — a double layer that's easy to misconfigure as a silent deny. Endpoint policies (IAM-style JSON) are a separate control plane from SGs entirely, so a request that clears the SG can still be rejected there. One thing that's not a gotcha anymore: cross-AZ data transfer through PrivateLink has been free since April 2022.
DNS correctness is documented as the #1 cause of Private Link failures — usually on-prem DNS not forwarding the privatelink.* zones to Azure's resolver. NSG flow logs don't cover the endpoint NIC at all, leaving a visibility blind spot at exactly the point a security team would want it, until VNet flow logs close the gap (NSG flow logs retire Sept 2027).
purpose=PRIVATE_SERVICE_CONNECT) sized for NAT — a capacity-planning step AWS and Azure don't surface as explicit config.Undersize the producer's PSC NAT subnet and you silently cap how many consumers can connect. GCP is also the only one of the three with a genuinely bidirectional primitive — PSC interfaces — letting the producer initiate connections back to the consumer, breaking the client-only assumption that holds on AWS and Azure.
Same primitive everywhere — interface in your subnet, hypervisor-level NAT, no route table involved. The differences that matter are at the edges: GCP adds a bidirectional mode and a producer-side NAT subnet to capacity-plan; Azure trades that flexibility for the sharpest DNS-dependency story of the three; AWS is the most "just works" once your SG-and-endpoint-policy intersection is wired correctly — which is itself the most common way to get it wrong.