We needed a public network load balancer with SSL (through AWS Certificate Manager) and took me some retry’s to get it right since most examples are based upon the classic or application load balancer so here to share:
Terra10NetworkLoadBalancer: Type: AWS::ElasticLoadBalancingV2::LoadBalancer Properties: Name: t10-networkloadbalancer Scheme: internet-facing Subnets: !Ref Terra10Subnet Type: network Tags: - Key: Name Value: t10-networklb Terra10NetworkLoadBalancerTargetGroup: Type: AWS::ElasticLoadBalancingV2::TargetGroup Properties: Name: t10-networklb-target Port: 443 Protocol: TCP VpcId: !ImportValue t10-vpc-id TargetGroupAttributes: - Key: deregistration_delay.timeout_seconds Value: 60 Targets: - Id: !Ref Terra10EC2Instance1 Port: 443 - Id: !Ref Terra10EC2Instance2 Port: 443 Tags: - Key: Name Value: t10-networklb-target Terra10NetworkLoadBalancerListener: Type: AWS::ElasticLoadBalancingV2::Listener Properties: DefaultActions: - Type: forward TargetGroupArn: !Ref Terra10NetworkLoadBalancerTargetGroup LoadBalancerArn: !Ref Terra10NetworkLoadBalancer Port: '443' Protocol: TCP Terra10NetworkLoadBalancerListenerCert: Type: AWS::ElasticLoadBalancingV2::ListenerCertificate Properties: Certificates: - CertificateArn: arn:aws:acm:eu-west-1:xxxaccountxxx:certificate/123456.... ListenerArn: !Ref Terra10NetworkLoadBalancerListener
Reference
- Source in github here: https://github.com/janvanzoggel/aws-cloudformation
- AWS CloudFormation User Guide