AWS Elastic Load Balancing V2 Deployment with CloudFormation: Difference between revisions
Jump to navigation
Jump to search
(11 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
=External= | =External= | ||
* [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/ | * [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ElasticLoadBalancingV2.html Elastic Load Balancing V2 Resource Types Reference] | ||
=Internal= | =Internal= | ||
Line 12: | Line 12: | ||
==AWS::ElasticLoadBalancingV2::LoadBalancer== | ==AWS::ElasticLoadBalancingV2::LoadBalancer== | ||
{{External|[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html AWS::ElasticLoadBalancingV2::LoadBalancer]}} | |||
Resources: | Resources: | ||
Line 33: | Line 35: | ||
[[AWS_Elastic_Load_Balancing_Concepts#Subnet_Mapping|SubnetMappings]]: | [[AWS_Elastic_Load_Balancing_Concepts#Subnet_Mapping|SubnetMappings]]: | ||
- ... | - ... | ||
[[AWS_Elastic_Load_Balancing_Concepts# | [[AWS_Elastic_Load_Balancing_Concepts#Application_Load_Balancer_and_Security_Groups|SecurityGroups]]: | ||
- some-security-group-for-application-load-balancer | - some-security-group-for-application-load-balancer | ||
===Create an Application Load Balancer=== | |||
<syntaxhighlight lang='yaml'> | |||
Resources: | |||
InternalALB: | |||
Type: AWS::ElasticLoadBalancingV2::LoadBalancer | |||
Properties: | |||
Name: !Sub ${EnvironmentName}-alb | |||
Scheme: 'internal' | |||
Type: 'application' | |||
IpAddressType: 'ipv4' | |||
LoadBalancerAttributes: | |||
- Key: access_logs.s3.enabled | |||
Value: false | |||
Subnets: | |||
- !Ref BlueSubnet | |||
- !Ref RedSubnet | |||
SecurityGroups: | |||
- !Ref InternalALBSecurityGroup | |||
</syntaxhighlight> | |||
===Create a Network Load Balancer=== | |||
==AWS::ElasticLoadBalancingV2::TargetGroup== | ==AWS::ElasticLoadBalancingV2::TargetGroup== | ||
Line 57: | Line 82: | ||
===Application Load Balancer TargetGroup=== | ===Application Load Balancer TargetGroup=== | ||
Resources: | Resources: | ||
TargetGroup: | TargetGroup: | ||
Type: AWS::ElasticLoadBalancingV2::TargetGroup | Type: AWS::ElasticLoadBalancingV2::TargetGroup | ||
Properties: | Properties: | ||
[[AWS_Elastic_Load_Balancing_Concepts#Target_Group_Name|Name]]: !Ref ProjectID | |||
[[AWS_Elastic_Load_Balancing_Concepts#Target_Group_VPC_Association|VpcId]]: !Ref VPCId | |||
[[AWS_Elastic_Load_Balancing_Concepts#Target_Group_Protocol|Protocol]]: HTTP | |||
[[AWS_Elastic_Load_Balancing_Concepts#Target_Group_Port|Port]]: !Ref Port | |||
[[AWS_Elastic_Load_Balancing_Concepts#Target_Type|TargetType]]: ip | |||
[[AWS_Elastic_Load_Balancing_Concepts#Health_Check_Protocol|HealthCheckProtocol]]: HTTP | |||
[[AWS_Elastic_Load_Balancing_Concepts#Health_Check_Interval|HealthCheckIntervalSeconds]]: 60 | |||
[[AWS_Elastic_Load_Balancing_Concepts#Health_Check_Timeout|HealthCheckTimeoutSeconds]]: 5 | |||
[[AWS_Elastic_Load_Balancing_Concepts#Healthy_Threshold_Count|HealthyThresholdCount]]: 2 | |||
UnhealthyThresholdCount: 10 | [[AWS_Elastic_Load_Balancing_Concepts#Unhealthy_Threshold_Count|UnhealthyThresholdCount]]: 10 | ||
[[AWS_Elastic_Load_Balancing_Concepts#Health_Check_Path|HealthCheckPath]]: '/actuator/health' | |||
==AWS::ElasticLoadBalancingV2::Listener== | ==AWS::ElasticLoadBalancingV2::Listener== | ||
Line 90: | Line 114: | ||
===Application Load Balancer Listener=== | ===Application Load Balancer Listener=== | ||
Resources: | Resources: | ||
LoadBalancerListener: | |||
Type: AWS::ElasticLoadBalancingV2::Listener | |||
Properties: | |||
LoadBalancerArn: !Ref ApplicationkLoadBalancerArn | |||
[[AWS_Elastic_Load_Balancing_Concepts#Listener_Port|Port]]: !Ref LoadBalancerPort | |||
[[AWS_Elastic_Load_Balancing_Concepts#Listener_Protocol|Protocol]]: HTTP | |||
[[AWS_Elastic_Load_Balancing_Concepts#Default_Listener_Rule|DefaultActions]]: | |||
- TargetGroupArn: !Ref TargetGroup | |||
[[AWS_Elastic_Load_Balancing_Concepts#Action_Type|Type]]: 'forward' | |||
Latest revision as of 16:41, 30 April 2019
External
Internal
Resource Types
AWS::ElasticLoadBalancingV2::LoadBalancer
Resources: ALoadBalancer: Type: AWS::ElasticLoadBalancingV2::LoadBalancer Properties: Name: blue Scheme: 'internet-facing'|'internal' Type: 'application'|'network' IpAddressType: 'ipv4' LoadBalancerAttributes: - Key: 'access_logs.s3.enabled' Value: true|false - Key: 'access_logs.s3.bucket' Value: ... - Key: 'access_logs.s3.prefix' Value: ... Subnets: - blue-subnet-id - red-subnet-id SubnetMappings: - ... SecurityGroups: - some-security-group-for-application-load-balancer
Create an Application Load Balancer
Resources:
InternalALB:
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
Properties:
Name: !Sub ${EnvironmentName}-alb
Scheme: 'internal'
Type: 'application'
IpAddressType: 'ipv4'
LoadBalancerAttributes:
- Key: access_logs.s3.enabled
Value: false
Subnets:
- !Ref BlueSubnet
- !Ref RedSubnet
SecurityGroups:
- !Ref InternalALBSecurityGroup
Create a Network Load Balancer
AWS::ElasticLoadBalancingV2::TargetGroup
Network Load Balancer TargetGroup
Resources: TargetGroup: Type: AWS::ElasticLoadBalancingV2::TargetGroup Properties: Name: !Ref ProjectID VpcId: !Ref VPCId Protocol: TCP Port: !Ref Port TargetType: ip HealthCheckProtocol: TCP HealthCheckIntervalSeconds: 10 HealthCheckTimeoutSeconds: 10 HealthyThresholdCount: 3 UnhealthyThresholdCount: 3
Application Load Balancer TargetGroup
Resources: TargetGroup: Type: AWS::ElasticLoadBalancingV2::TargetGroup Properties: Name: !Ref ProjectID VpcId: !Ref VPCId Protocol: HTTP Port: !Ref Port TargetType: ip HealthCheckProtocol: HTTP HealthCheckIntervalSeconds: 60 HealthCheckTimeoutSeconds: 5 HealthyThresholdCount: 2 UnhealthyThresholdCount: 10 HealthCheckPath: '/actuator/health'
AWS::ElasticLoadBalancingV2::Listener
Network Load Balancer Listener
Resources: LoadBalancerListener: Type: AWS::ElasticLoadBalancingV2::Listener Properties: LoadBalancerArn: !Ref LoadBalancerArn Port: !Ref NetworkLoadBalancerPort Protocol: TCP DefaultActions: - TargetGroupArn: !Ref TargetGroup Type: 'forward'
Application Load Balancer Listener
Resources: LoadBalancerListener: Type: AWS::ElasticLoadBalancingV2::Listener Properties: LoadBalancerArn: !Ref ApplicationkLoadBalancerArn Port: !Ref LoadBalancerPort Protocol: HTTP DefaultActions: - TargetGroupArn: !Ref TargetGroup Type: 'forward'