nlb.tf 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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. tags = merge(var.tags, { Name = "${var.name}-nlb-external-${var.environment}" })
  32. }
  33. resource "aws_lb_listener" "static" {
  34. load_balancer_arn = aws_lb.static.arn
  35. port = var.listener_port
  36. protocol = "TCP"
  37. default_action {
  38. type = "forward"
  39. target_group_arn = aws_lb_target_group.static.arn
  40. }
  41. tags = merge(var.tags, { Name = "${var.name}-nlb-external-${var.environment}" })
  42. }
  43. resource "aws_lb_target_group" "static" {
  44. name_prefix = substr("${var.name}-static", 0, 6)
  45. port = var.listener_port
  46. protocol = "TCP"
  47. target_type = "alb"
  48. vpc_id = var.vpc_id
  49. tags = merge(var.tags, { Name = "${var.name}-nlb-external-${var.environment}" })
  50. }
  51. resource "aws_lb_target_group_attachment" "static" {
  52. target_group_arn = aws_lb_target_group.static.arn
  53. target_id = aws_lb.external.id
  54. port = var.listener_port
  55. }
  56. # Redirect
  57. resource "aws_lb_listener" "static-redirect" {
  58. count = var.redirect_80 ? 1 : 0
  59. load_balancer_arn = aws_lb.static.arn
  60. port = 80
  61. protocol = "TCP"
  62. default_action {
  63. type = "forward"
  64. target_group_arn = aws_lb_target_group.static-redirect[0].arn
  65. }
  66. tags = merge(var.tags, { Name = "${var.name}-nlb-external-${var.environment}" })
  67. }
  68. resource "aws_lb_target_group" "static-redirect" {
  69. count = var.redirect_80 ? 1 : 0
  70. name_prefix = substr("${var.name}-static", 0, 6)
  71. port = 80
  72. protocol = "TCP"
  73. target_type = "alb"
  74. vpc_id = var.vpc_id
  75. tags = merge(var.tags, { Name = "${var.name}-nlb-external-${var.environment}" })
  76. }
  77. resource "aws_lb_target_group_attachment" "static-redirect" {
  78. count = var.redirect_80 ? 1 : 0
  79. target_group_arn = aws_lb_target_group.static-redirect[0].arn
  80. target_id = aws_lb.external.id
  81. port = 80
  82. }