Skip to content

[FEAT] Add Terraform configuration for AWS with Backend Private Link#24

Open
eri-adepoju wants to merge 2 commits intomainfrom
aws-byovpc-backend-private-link
Open

[FEAT] Add Terraform configuration for AWS with Backend Private Link#24
eri-adepoju wants to merge 2 commits intomainfrom
aws-byovpc-backend-private-link

Conversation

@eri-adepoju
Copy link

@eri-adepoju eri-adepoju commented Feb 9, 2026

Pull Request

Description

Adds.a new AWS workspace deployment template with backend private link.

Category

  • core-platform
  • data-engineering
  • data-governance
  • data-warehousing
  • genai-ml
  • launch-accelerator
  • workspace-setup

Type of Change

  • New project
  • Bug fix
  • Enhancement
  • Documentation

Project Details

Project Name: AWS Databricks workspace with backend private link deployment
Purpose: Demonstrate how to deploy Databricks workspaces with a new or existing VPC and backend private link.
Technologies Used: Terraform

Testing

  • Code runs without errors
  • Documentation is complete
  • [N/A] Used only synthetic data

Security Compliance ✅

  • No customer data, PII, or proprietary information
  • No credentials or access tokens
  • [N/A] Only synthetic data used
  • [N/A] Third-party licenses acknowledged

By submitting this PR, I confirm I have followed the CONTRIBUTING.md guidelines and security requirements.

# =============================================================================

# Egress ports for Databricks connectivity
sg_egress_ports = [443, 3306, 2443, 8443, 8444, 8445, 8446, 8447, 8448, 8449, 8450, 8451]
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's add 6666 to this list as well! By default it is required for SCC.

cidr_blocks = [egress.value]
}
}

Copy link

@ffgdeo ffgdeo Feb 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're missing an egress rule to S3. We should add the following lines
dynamic "egress" { for_each = var.network_configuration != "custom" ? [1] : [] content { description = "S3 Gateway Endpoint - SG" from_port = 443 to_port = 443 protocol = "tcp" prefix_list_ids = [data.aws_prefix_list.s3.id] } }
SRA does the same. check network.tf (Lines 76-85)
I could not get the clusters to spin up without adding this rule, or without allowing 0.0.0.0/0 outbound.

Comment on lines +8 to +13
endpoints = {
s3 = {
service = "s3"
service_type = "Gateway"
route_table_ids = length(var.private_route_table_ids) > 0 ? var.private_route_table_ids : module.vpc[0].private_route_table_ids
},
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should think about what happens when a customer already has an s3 gateway endpoint in his VPC (very common)

Comment on lines +10 to +14
enable_dns_hostnames = true
enable_nat_gateway = true
single_nat_gateway = true
one_nat_gateway_per_az = false
create_igw = true
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should make it optional to deploy the VPC with a NAT Gateway. We can get a variable to assign these values to true or false.

Comment on lines +19 to +20
public_subnet_names = [for az in var.availability_zones : format("%s-public-%s", var.resource_prefix, az)]
public_subnets = var.public_subnets_cidr
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same applies to public subnets - only create them if specified.

@ffgdeo
Copy link

ffgdeo commented Feb 27, 2026

In addition to the comments I shared, we should think about the risks of creating resources in the VPCs that customers can optionally provide. SRA, for example, either creates all the objects or assumes the customer's VPC already has the correct configs.
Also, in my opinion, this tf template should mimic as much as we can the official Private Link Documentation, i.e.:
Standard configuration (Option 1): Requires outbound internet access using a NAT gateway and internet gateway (or similar customer-managed infrastructure) along with optional S3, STS, and Kinesis VPC endpoints.
Fully-private configuration (Option 2): Eliminates NAT gateway and internet gateway by requiring S3, STS, and Kinesis VPC endpoints.

@haleyyyblue
Copy link
Collaborator

This is a minor piece of feedback, but could you add a description of this new scenario to the README.md at the link below?
Available Scenarios

@haleyyyblue haleyyyblue self-requested a review March 6, 2026 06:04
@haleyyyblue
Copy link
Collaborator

Could we change the project name to aws-byovpc-classic-privatelink?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants