Я пытаюсь создать экземпляр EC2, который будет использовать автомасштабирование, прикрепленный к балансировщику нагрузки.AWS Автомасштабирование балансировки нагрузки с облачной областью
К сожалению, я получаю ошибку
The availability zones of the specified subnets and the AutoScalingGroup do not match
Однако, это мой текущий CloudFormation сценарий:
"ApiAutoScaling" : {
"Type" : "AWS::AutoScaling::AutoScalingGroup",
"Properties" : {
"VPCZoneIdentifier" : [ "subnet-5ff05206", "subnet-b1109fc6", "subnet-948ce5f1" ],
"InstanceId" : {
"Ref" : "ApiEC2"
},
"MaxSize" : 3,
"MinSize" : 1,
"LoadBalancerNames" : [ "Api" ]
}
},
"ApiLoadBalancer" : {
"Type" : "AWS::ElasticLoadBalancing::LoadBalancer",
"Properties" : {
"LoadBalancerName" : "Api",
"Listeners" : [
{
"InstancePort" : "80",
"InstanceProtocol" : "HTTP",
"LoadBalancerPort" : "80",
"Protocol" : "HTTP"
},
{
"InstancePort" : "80",
"InstanceProtocol" : "HTTP",
"LoadBalancerPort" : "443",
"Protocol" : "HTTPS",
"SSLCertificateId" : "arn:aws:iam::xxx"
}
],
"SecurityGroups" : [ "sg-a88444cc" ],
"Subnets" : [ "subnet-5ff05206", "subnet-b1109fc6", "subnet-948ce5f1" ]
}
}
Как вы можете видеть, мой список подсети одинакова для обоих моих автомасштабирования группы и моей балансировки нагрузки. Ясно, что я неправильно понял, как это должно работать, но я не могу это решить.
Если требуется больше информации, пожалуйста, дайте мне знать. – DanielM
Попробуйте указать свойство 'AvailabilityZones' для группы автоматического масштабирования. По умолчанию используется все они, поэтому, если ваши подсети используют только подсеть зон, вы получите это сообщение об ошибке. – bsvingen
Вы правы. Я пробовал это вручную без везения, но трюк заключался в использовании [Fn :: GetAZs] (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getavailabilityzones.html) , даже просто '" AvailabilityZones ": {" Fn :: GetAZs ":" "}' работает. Я считаю, что, как вы говорите, по умолчанию используется их все, но функция вернет только те, которые вы на самом деле * можете использовать *. Немного странно, но все же, если вы хотите ответить на этот вопрос, я буду отмечать его как правильное. – DanielM