Есть ли способ для облачной информации запрашивать доступные зоны для создания подсети?

19

У меня есть сценарий облачной информации, который пытается создать VPC, с одной подсети за AZ.

Когда я запускаю:

aws ec2 describe-availablity-zones

Я получаю 4 зоны:

"AvailabilityZones": [
    {
        "State": "available", 
        "RegionName": "us-east-1", 
        "Messages": [], 
        "ZoneName": "us-east-1a"
    }, 
    {
        "State": "available", 
        "RegionName": "us-east-1", 
        "Messages": [], 
        "ZoneName": "us-east-1b"
    }, 
    {
        "State": "available", 
        "RegionName": "us-east-1", 
        "Messages": [], 
        "ZoneName": "us-east-1c"
    }, 
    {
        "State": "available", 
        "RegionName": "us-east-1", 
        "Messages": [], 
        "ZoneName": "us-east-1d"
    }
 ]

Однако, когда я пытаюсь создать свой стек, я получаю сообщение об ошибке:

  "ResourceStatusReason": "Value (us-east-1a) for parameter availabilityZone
   is invalid. Subnets can currently only be created in the following 
   availability zones: us-east-1c, us-east-1b, us-east-1d.", 

Я указываю AZ с помощью

      "AvailabilityZone" : {
        "Fn::Select" : [ "0", { "Fn::GetAZs" : "" } ]
      },

Есть ли способ проверить, действительно ли AZ доступен для создания подсети?

    
задан chris 27.01.2014 в 20:58
источник

4 ответа

8

Это может быть не очень полезно для подхода CLI или вашего точного сценария, но с AWS Management Console это работает плавно.

С последними обновлениями с параметрами CloudFormation вы сможете указать точки AZ, относящиеся к указанным AZ.

Это было бы очень удобно во время DR / DR Drills и сделать шаблон CFN Region Independent.

"Parameters": {
    "SubnetAZ": {
      "Description": "Availability Zone of the Subnet",
      "Type": "AWS::EC2::AvailabilityZone::Name"
    }
}

Дополнительная информация о CloudFormation Параметры

    
ответ дан Naveen Vijay 03.06.2015 в 10:40
  • Fn :: GetAZs предоставит доступные и пригодные для использования зоны доступности, если у вас есть по умолчанию vpc с подсети в каждом AZ! которые, кстати, все новые учетные записи aws имеют до тех пор, пока вы не удалите их вручную. –  hellomichibye 17.11.2016 в 16:07
  • @Naveen Я думаю, что в вашем фрагменте вы имели в виду: List <AWS :: EC2 :: AvailabilityZone :: Name> вместо AWS :: EC2 :: AvailabilityZone :: Name –  Somar 15.02.2017 в 14:43
6

К сожалению, у меня была такая же проблема. В CloudFormation нет метода для этого, и зоны могут быть разными для каждой учетной записи AWS. Это ограничение инфраструктуры VPC и, скорее всего, не изменится. Единственным вариантом будет жестко настроить зоны, найденные вами в шаблоне CloudFOrmation, вместо Fn :: Select, например:

«ДоступностьZone»: «us-east-1b»

В противном случае, если вы оставите пустое место в AccessZone, по умолчанию будет использоваться AWS, который автоматически выберет для вас.     

ответ дан Arya 29.01.2014 в 21:32
  • Нельзя оставить их пустыми, потому что мы создаем VPC с подсетями в каждом AZ - проблема заключается не в каждом возвращенном AZ, который позволяет подсети! –  chris 29.01.2014 в 23:11
  • Итак, если одна зона не разрешает подсети VPC, в чем смысл ее использования, которую вы размещаете в VPC? Просто игнорируйте эту зону и обрабатывайте 3 зоны, которые ее поддерживают. –  Arya 31.01.2014 в 15:03
  • Это ручной процесс. Если я создаю подсети на основе Fn :: Select с индексами 0, 1 и 2, он иногда терпит неудачу, потому что на самом деле есть 4 AZ, но не каждый из них позволяет подсети –  chris 31.01.2014 в 21:02
  • Вы можете предоставить его в списке А-Я вместо использования Fn :: GetAZs. Если вы хотите сделать 3 разных подсети, определите 3 различных стековых ресурса, каждый из которых ссылается на определенную зону. –  Arya 03.02.2014 в 20:19
  • «Решение», которое я реализовал, - это использовать сопоставление для каждой из учетных записей, причем по-настоящему доступные А-Я являются одним из значений в сопоставлении. –  scientastic 17.03.2014 в 21:58
Показать остальные комментарии
2

Fn :: GetAZs предоставит доступные и пригодные для использования зоны доступности, если у вас есть vpc по умолчанию с подсети в каждом AZ! который, кстати, все новые учетные записи aws имеют до тех пор, пока вы не удалите их вручную.

    
ответ дан hellomichibye 17.11.2016 в 16:07
  • Я видел Fn :: GetAZs возвращают непригодные зоны. –  Tim Bassett 23.11.2016 в 07:59
  • , то у вас нет подсетей по умолчанию –  hellomichibye 24.11.2016 в 08:38
  • Это действительно интересная «функция». Это было документировано где угодно в Документах AWS? –  Felipe Alvarez 05.07.2017 в 05:56
-2

Я обойти ограничение, избегая json как средства выражения. Я использую тропосферу для создания моих шаблонов облачной информации. ( Ссылка )

Однако вам пришлось бы развертывать какие-то инструменты для развертывания шаблонов облачной информации в отдельных регионах.

    
ответ дан Bald Monkey 29.12.2016 в 22:30