diff --git a/static_egress_ip.tf b/static_egress_ip.tf
index 7337b9b338e5579444d6e5c4cda267dcbbb7beeb..85b8db05392cfbe8c19c76ced7d3235a91a4d889 100644
--- a/static_egress_ip.tf
+++ b/static_egress_ip.tf
@@ -50,6 +50,7 @@ resource "google_compute_router_nat" "static-ip-nat" {
   nat_ips                = [google_compute_address.static-ip[0].self_link]
   nat_ip_allocate_option = "MANUAL_ONLY"
   region                 = var.cloud_run_region
+  min_ports_per_vm       = var.min_ports_per_vm
 
   source_subnetwork_ip_ranges_to_nat = "LIST_OF_SUBNETWORKS"
   subnetwork {
diff --git a/variables.tf b/variables.tf
index 22a4191f157bcbbdf083d316174386eec515576f..e8c49f6a89849ab5f5bc6958f5f0e5d62f375796 100644
--- a/variables.tf
+++ b/variables.tf
@@ -209,6 +209,16 @@ variable "static_egress_ip_cidr_range" {
   description = "The cidr range used to create a subnet that this cloud run will use if assigned a static ip"
 }
 
+variable "min_ports_per_vm" {
+  default     = 64
+  type        = number
+  description = <<-EOL
+    When using Cloud NAT to provide an egress route, Cloud NAT's minimum ports per VM
+    can be configured to determine how many concurrent connections can be established
+    to the same destination IP address and port. 
+EOL
+}
+
 variable "secrets_volume" {
   type = list(object({
     name    = string # name of the file that is going to be mounted