nlb.tf 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. #########################
  2. # EIP
  3. resource "aws_eip" "static" {
  4. count = 2
  5. #checkov:skip=CKV2_AWS_19:These EIPs are attached to the NLB
  6. vpc = true
  7. lifecycle {
  8. prevent_destroy = true # Even if everything else goes away, we want to keep these.
  9. }
  10. tags = merge(var.tags, { Name = "${var.name}-nlb-external-${var.environment}" })
  11. }
  12. #########################
  13. # ELB
  14. resource "aws_lb" "static" {
  15. name_prefix = substr("${var.name}-static", 0, 6)
  16. load_balancer_type = "network"
  17. internal = false #tfsec:ignore:aws-elb-alb-not-public
  18. enable_cross_zone_load_balancing = true
  19. subnet_mapping {
  20. subnet_id = var.public_subnets[0]
  21. allocation_id = aws_eip.static[0].id
  22. }
  23. subnet_mapping {
  24. subnet_id = var.public_subnets[1]
  25. allocation_id = aws_eip.static[1].id
  26. }
  27. access_logs {
  28. bucket = "xdr-elb-${var.environment}"
  29. enabled = true
  30. }
  31. lifecycle {
  32. create_before_destroy = true
  33. }
  34. tags = merge(var.tags, { Name = "${var.name}-nlb-external-${var.environment}" })
  35. }
  36. resource "aws_lb_listener" "static" {
  37. load_balancer_arn = aws_lb.static.arn
  38. port = var.listener_port
  39. protocol = "TCP"
  40. default_action {
  41. type = "forward"
  42. target_group_arn = aws_lb_target_group.static.arn
  43. }
  44. lifecycle {
  45. create_before_destroy = true
  46. }
  47. tags = merge(var.tags, { Name = "${var.name}-nlb-external-${var.environment}" })
  48. }
  49. resource "aws_lb_target_group" "static" {
  50. name_prefix = substr("${var.name}-static", 0, 6)
  51. port = var.listener_port
  52. protocol = "TCP"
  53. target_type = "alb"
  54. vpc_id = var.vpc_id
  55. health_check {
  56. protocol = "HTTPS"
  57. port = var.listener_port
  58. path = var.healthcheck_path
  59. interval = "10"
  60. }
  61. lifecycle {
  62. create_before_destroy = true
  63. }
  64. tags = merge(var.tags, { Name = "${var.name}-nlb-external-${var.environment}" })
  65. }
  66. resource "aws_lb_target_group_attachment" "static" {
  67. target_group_arn = aws_lb_target_group.static.arn
  68. target_id = aws_lb.external.id
  69. port = var.listener_port
  70. }
  71. # Redirect
  72. resource "aws_lb_listener" "static-redirect" {
  73. count = var.redirect_80 ? 1 : 0
  74. load_balancer_arn = aws_lb.static.arn
  75. port = 80
  76. protocol = "TCP"
  77. default_action {
  78. type = "forward"
  79. target_group_arn = aws_lb_target_group.static-redirect[0].arn
  80. }
  81. tags = merge(var.tags, { Name = "${var.name}-nlb-external-${var.environment}" })
  82. }
  83. resource "aws_lb_target_group" "static-redirect" {
  84. count = var.redirect_80 ? 1 : 0
  85. name_prefix = substr("${var.name}-static", 0, 6)
  86. port = 80
  87. protocol = "TCP"
  88. target_type = "alb"
  89. vpc_id = var.vpc_id
  90. lifecycle {
  91. create_before_destroy = true
  92. }
  93. tags = merge(var.tags, { Name = "${var.name}-nlb-external-${var.environment}" })
  94. }
  95. resource "aws_lb_target_group_attachment" "static-redirect" {
  96. count = var.redirect_80 ? 1 : 0
  97. target_group_arn = aws_lb_target_group.static-redirect[0].arn
  98. target_id = aws_lb.external.id
  99. port = 80
  100. }