Frammenti di modello Elastic Load Balancing
Per creare un Application Load Balancer, un Network Load Balancer o un Gateway Load Balancer, utilizza i tipi di risorse V2 che iniziano con AWS::ElasticLoadBalancingV2. Per creare un Classic Load Balancer, usa i tipi di risorse che iniziano con AWS::ElasticLoadBalancing.
Risorse ELBv2
Questo esempio definisce un Application Load Balancer con un listener HTTP e un’azione predefinita che inoltra il traffico al gruppo di destinazione. Il bilanciatore del carico utilizza le impostazioni predefinite per il controllo dell’integrità. Il gruppo di destinazione ha due istanze EC2 registrate.
- YAML
-
Resources:
myLoadBalancer:
Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
Properties:
Name: my-alb
Type: application
Scheme: internal
Subnets:
- !Ref subnet-AZ1
- !Ref subnet-AZ2
SecurityGroups:
- !Ref mySecurityGroup
myHTTPlistener:
Type: 'AWS::ElasticLoadBalancingV2::Listener'
Properties:
LoadBalancerArn: !Ref myLoadBalancer
Protocol: HTTP
Port: 80
DefaultActions:
- Type: "forward"
TargetGroupArn: !Ref myTargetGroup
myTargetGroup:
Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
Properties:
Name: "my-target-group"
Protocol: HTTP
Port: 80
TargetType: instance
VpcId: !Ref myVPC
Targets:
- Id: !GetAtt Instance1.InstanceId
Port: 80
- Id: !GetAtt Instance2.InstanceId
Port: 80
- JSON
-
{
"Resources": {
"myLoadBalancer": {
"Type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
"Properties": {
"Name": "my-alb",
"Type": "application",
"Scheme": "internal",
"Subnets": [
{
"Ref": "subnet-AZ1"
},
{
"Ref": "subnet-AZ2"
}
],
"SecurityGroups": [
{
"Ref": "mySecurityGroup"
}
]
}
},
"myHTTPlistener": {
"Type": "AWS::ElasticLoadBalancingV2::Listener",
"Properties": {
"LoadBalancerArn": {
"Ref": "myLoadBalancer"
},
"Protocol": "HTTP",
"Port": 80,
"DefaultActions": [
{
"Type": "forward",
"TargetGroupArn": {
"Ref": "myTargetGroup"
}
}
]
}
},
"myTargetGroup": {
"Type": "AWS::ElasticLoadBalancingV2::TargetGroup",
"Properties": {
"Name": "my-target-group",
"Protocol": "HTTP",
"Port": 80,
"TargetType": "instance",
"VpcId": {
"Ref": "myVPC"
},
"Targets": [
{
"Id": {
"Fn::GetAtt": [
"Instance1",
"InstanceId"
]
},
"Port": 80
},
{
"Id": {
"Fn::GetAtt": [
"Instance2",
"InstanceId"
]
},
"Port": 80
}
]
}
}
}
}
Risorse relative a Classic Load Balancer
Questo esempio definisce un Classic Load Balancer con un listener HTTP e nessuna istanza EC2 registrata. Il bilanciatore del carico utilizza le impostazioni predefinite per il controllo dell’integrità.
- YAML
-
myLoadBalancer:
Type: 'AWS::ElasticLoadBalancing::LoadBalancer'
Properties:
AvailabilityZones:
- "us-east-1a"
Listeners:
- LoadBalancerPort: '80'
InstancePort: '80'
Protocol: HTTP
- JSON
-
"myLoadBalancer" : {
"Type" : "AWS::ElasticLoadBalancing::LoadBalancer",
"Properties" : {
"AvailabilityZones" : [ "us-east-1a" ],
"Listeners" : [ {
"LoadBalancerPort" : "80",
"InstancePort" : "80",
"Protocol" : "HTTP"
} ]
}
}
Questo esempio definisce un Classic Load Balancer con un listener HTTP, due istanze EC2 registrate e nessuna delle impostazioni per il controllo dell’integrità personalizzate.
- YAML
-
myClassicLoadBalancer:
Type: 'AWS::ElasticLoadBalancing::LoadBalancer'
Properties:
AvailabilityZones:
- "us-east-1a"
Instances:
- Ref: Instance1
- Ref: Instance2
Listeners:
- LoadBalancerPort: '80'
InstancePort: '80'
Protocol: HTTP
HealthCheck:
Target: HTTP:80/
HealthyThreshold: '3'
UnhealthyThreshold: '5'
Interval: '30'
Timeout: '5'
- JSON
-
"myClassicLoadBalancer" : {
"Type" : "AWS::ElasticLoadBalancing::LoadBalancer",
"Properties" : {
"AvailabilityZones" : [ "us-east-1a" ],
"Instances" : [
{ "Ref" : "Instance1" },
{ "Ref" : "Instance2" }
],
"Listeners" : [ {
"LoadBalancerPort" : "80",
"InstancePort" : "80",
"Protocol" : "HTTP"
} ],
"HealthCheck" : {
"Target" : "HTTP:80/",
"HealthyThreshold" : "3",
"UnhealthyThreshold" : "5",
"Interval" : "30",
"Timeout" : "5"
}
}
}