可以使用以下步骤来将AWS API Gateway私有集成与ALB + VPC链接和ALB HTTPS侦听器集成:
在VPC中创建VPC链接,并创建一个网络负载均衡器。
resource "aws_vpc_link" "my_vpc_link" {
name = "my-vpc-link"
target_arns = ["${aws_lb.my_lb.arn}"]
}
resource "aws_lb" "my_lb" {
name = "my-alb"
internal = true
load_balancer_type = "network"
subnets = ["subnet-12345678", "subnet-abcdefgh"]
}
resource "aws_lb_listener" "my_lb_http_listener" {
load_balancer_arn = "${aws_lb.my_lb.arn}"
port = "80"
default_action {
type = "forward"
target_group_arn = "${aws_lb_target_group.my_lb_target_group.arn}"
}
}
在网络负载均衡器中创建一个目标组,并将其与目标关联,以便API Gateway可以向目标发送请求。
resource "aws_lb_target_group" "my_lb_target_group" {
name = "my-target-group"
port = 80
protocol = "TCP"
target_type = "ip"
health_check {
protocol = "TCP"
interval = 30
timeout = 10
healthy_threshold = 2
unhealthy_threshold = 10
}
}
resource "aws_lb_target_group_attachment" "my_lb_attachment" {
target_group_arn = "${aws_lb_target_group.my_lb_target_group.arn}"
target_id = "${aws_instance.my_instance.id}"
port = 80
}
在API Gateway中创建一个私有端点,并将其与VPC链接和目标组关联。
resource "aws_api_gateway_vpc_link" "my_api_gateway_vpc_link" {
name = "my-api-gateway-vpc-link"
target_arns = ["${aws_vpc_link.my_vpc_link.arn}"]
}
resource "aws_api_gateway_integration" "my_api_gateway_integration" {
rest_api_id = "${aws_api_gateway_rest_api.my_rest_api.id}"
resource_id = "${aws_api_gateway_resource.my_resource.id}"
http_method =