|
| 1 | +resource "aws_default_vpc" "vpc" {} |
| 2 | + |
| 3 | +data "aws_availability_zones" "available" { |
| 4 | + state = "available" |
| 5 | +} |
| 6 | + |
| 7 | +resource "aws_route_table" "private" { |
| 8 | + vpc_id = aws_default_vpc.vpc.id |
| 9 | + route = [] |
| 10 | +} |
| 11 | + |
| 12 | +resource "aws_subnet" "subnet" { |
| 13 | + for_each = { for i, name in data.aws_availability_zones.available.names: i => name } |
| 14 | + vpc_id = aws_default_vpc.vpc.id |
| 15 | + availability_zone = each.value |
| 16 | + cidr_block = cidrsubnet(aws_default_vpc.vpc.cidr_block, 4, 8 + each.key) |
| 17 | + map_public_ip_on_launch = false |
| 18 | +} |
| 19 | + |
| 20 | +resource "aws_route_table_association" "private" { |
| 21 | + for_each = aws_subnet.subnet |
| 22 | + subnet_id = each.value.id |
| 23 | + route_table_id = aws_route_table.private.id |
| 24 | +} |
| 25 | + |
| 26 | +resource "aws_apigatewayv2_vpc_link" "target" { |
| 27 | + name = "test-vpc-link" |
| 28 | + security_group_ids = [ aws_security_group.vpc_link.id ] |
| 29 | + subnet_ids = [ for s in aws_subnet.subnet : s.id ] |
| 30 | +} |
| 31 | + |
| 32 | +resource "aws_security_group" "vpc_link" { |
| 33 | + name = "test-vpc-link" |
| 34 | + vpc_id = aws_default_vpc.vpc.id |
| 35 | +} |
| 36 | + |
| 37 | +resource "aws_vpc_security_group_egress_rule" "vpc_link_to_load_balancer" { |
| 38 | + security_group_id = aws_security_group.vpc_link.id |
| 39 | + ip_protocol = "tcp" |
| 40 | + from_port = 80 |
| 41 | + to_port = 80 |
| 42 | + referenced_security_group_id = aws_security_group.target.id |
| 43 | +} |
| 44 | + |
| 45 | +resource "aws_vpc_security_group_ingress_rule" "vpc_link_from_internet" { |
| 46 | + security_group_id = aws_security_group.vpc_link.id |
| 47 | + ip_protocol = "tcp" |
| 48 | + from_port = 80 |
| 49 | + to_port = 80 |
| 50 | + cidr_ipv4 = "0.0.0.0/0" |
| 51 | +} |
0 commit comments