@@ -187,6 +187,41 @@ func TestAccAWSDefaultRouteTable_Route_TransitGatewayID(t *testing.T) {
187187 })
188188}
189189
190+ func TestAccAWSDefaultRouteTable_Route_VpcEndpointId (t * testing.T ) {
191+ var routeTable1 ec2.RouteTable
192+ rName := acctest .RandomWithPrefix ("tf-acc-test" )
193+ resourceName := "aws_default_route_table.test"
194+
195+ resource .ParallelTest (t , resource.TestCase {
196+ PreCheck : func () { testAccPreCheck (t ) },
197+ Providers : testAccProviders ,
198+ CheckDestroy : testAccCheckRouteTableDestroy ,
199+ Steps : []resource.TestStep {
200+ {
201+ Config : testAccAWSDefaultRouteTableConfigRouteVpcEndpointId (rName ),
202+ Check : resource .ComposeTestCheckFunc (
203+ testAccCheckRouteTableExists (resourceName , & routeTable1 ),
204+ ),
205+ },
206+ {
207+ ResourceName : resourceName ,
208+ ImportState : true ,
209+ ImportStateIdFunc : testAccAWSDefaultRouteTableImportStateIdFunc (resourceName ),
210+ ImportStateVerify : true ,
211+ },
212+ // Default route tables do not currently have a method to remove routes during deletion.
213+ // VPC Endpoints will not delete unless the route is removed prior, otherwise will error:
214+ // InvalidParameter: Endpoint must be removed from route table before deletion
215+ {
216+ Config : testAccAWSDefaultRouteTableConfigRouteVpcEndpointIdNoRoute (rName ),
217+ Check : resource .ComposeTestCheckFunc (
218+ testAccCheckRouteTableExists (resourceName , & routeTable1 ),
219+ ),
220+ },
221+ },
222+ })
223+ }
224+
190225func TestAccAWSDefaultRouteTable_vpc_endpoint (t * testing.T ) {
191226 var v ec2.RouteTable
192227 resourceName := "aws_default_route_table.foo"
@@ -570,6 +605,130 @@ resource "aws_default_route_table" "test" {
570605`
571606}
572607
608+ func testAccAWSDefaultRouteTableConfigRouteVpcEndpointId (rName string ) string {
609+ return composeConfig (
610+ testAccAvailableAZsNoOptInConfig (),
611+ fmt .Sprintf (`
612+ data "aws_caller_identity" "current" {}
613+
614+ resource "aws_vpc" "test" {
615+ cidr_block = "10.10.10.0/25"
616+
617+ tags = {
618+ Name = "tf-acc-test-load-balancer"
619+ }
620+ }
621+
622+ # Another route destination for update
623+ resource "aws_internet_gateway" "test" {
624+ vpc_id = aws_vpc.test.id
625+ }
626+
627+ resource "aws_subnet" "test" {
628+ availability_zone = data.aws_availability_zones.available.names[0]
629+ cidr_block = cidrsubnet(aws_vpc.test.cidr_block, 2, 0)
630+ vpc_id = aws_vpc.test.id
631+
632+ tags = {
633+ Name = "tf-acc-test-load-balancer"
634+ }
635+ }
636+
637+ resource "aws_lb" "test" {
638+ load_balancer_type = "gateway"
639+ name = %[1]q
640+
641+ subnet_mapping {
642+ subnet_id = aws_subnet.test.id
643+ }
644+ }
645+
646+ resource "aws_vpc_endpoint_service" "test" {
647+ acceptance_required = false
648+ allowed_principals = [data.aws_caller_identity.current.arn]
649+ gateway_load_balancer_arns = [aws_lb.test.arn]
650+ }
651+
652+ resource "aws_vpc_endpoint" "test" {
653+ service_name = aws_vpc_endpoint_service.test.service_name
654+ subnet_ids = [aws_subnet.test.id]
655+ vpc_endpoint_type = aws_vpc_endpoint_service.test.service_type
656+ vpc_id = aws_vpc.test.id
657+ }
658+
659+ resource "aws_default_route_table" "test" {
660+ default_route_table_id = aws_vpc.test.default_route_table_id
661+
662+ route {
663+ cidr_block = "0.0.0.0/0"
664+ vpc_endpoint_id = aws_vpc_endpoint.test.id
665+ }
666+ }
667+ ` , rName ))
668+ }
669+
670+ func testAccAWSDefaultRouteTableConfigRouteVpcEndpointIdNoRoute (rName string ) string {
671+ return composeConfig (
672+ testAccAvailableAZsNoOptInConfig (),
673+ fmt .Sprintf (`
674+ data "aws_caller_identity" "current" {}
675+
676+ resource "aws_vpc" "test" {
677+ cidr_block = "10.10.10.0/25"
678+
679+ tags = {
680+ Name = "tf-acc-test-load-balancer"
681+ }
682+ }
683+
684+ # Another route destination for update
685+ resource "aws_internet_gateway" "test" {
686+ vpc_id = aws_vpc.test.id
687+ }
688+
689+ resource "aws_subnet" "test" {
690+ availability_zone = data.aws_availability_zones.available.names[0]
691+ cidr_block = cidrsubnet(aws_vpc.test.cidr_block, 2, 0)
692+ vpc_id = aws_vpc.test.id
693+
694+ tags = {
695+ Name = "tf-acc-test-load-balancer"
696+ }
697+ }
698+
699+ resource "aws_lb" "test" {
700+ load_balancer_type = "gateway"
701+ name = %[1]q
702+
703+ subnet_mapping {
704+ subnet_id = aws_subnet.test.id
705+ }
706+ }
707+
708+ resource "aws_vpc_endpoint_service" "test" {
709+ acceptance_required = false
710+ allowed_principals = [data.aws_caller_identity.current.arn]
711+ gateway_load_balancer_arns = [aws_lb.test.arn]
712+ }
713+
714+ resource "aws_vpc_endpoint" "test" {
715+ service_name = aws_vpc_endpoint_service.test.service_name
716+ subnet_ids = [aws_subnet.test.id]
717+ vpc_endpoint_type = aws_vpc_endpoint_service.test.service_type
718+ vpc_id = aws_vpc.test.id
719+ }
720+
721+ resource "aws_default_route_table" "test" {
722+ default_route_table_id = aws_vpc.test.default_route_table_id
723+
724+ route {
725+ cidr_block = "0.0.0.0/0"
726+ gateway_id = aws_internet_gateway.test.id
727+ }
728+ }
729+ ` , rName ))
730+ }
731+
573732const testAccDefaultRouteTable_vpc_endpoint = `
574733data "aws_region" "current" {}
575734
0 commit comments