Зоны доступности с поддержкой VPC в Amazon

я обнаружил, что в некоторых регионах (таких как us-east-1) только некоторые зоны доступности доступны для создания подсетей (и, следовательно, экземпляров VPC). В моем случае это зоны us-east-1c,- 1d и-1e, но они различаются по счету.

Я создаю скрипт, который генерирует подсети и экземпляры VPC, поэтому было бы полезно узнать программно, какие зоны поддерживают VPC, тем более, что я вижу причину, по которой набор зон не может измениться (или, по крайней мере, расти) над время.

этот пост задавал в основном тот же вопрос, но принятый ответ на самом деле не предоставляет информацию, которую я и которую искал Аскер (если только ec2-describe-availability-zones не имеет определенного для VPC параметра, о котором я не знаю): доступность Amazon VPC

я выяснил один возможный обходной путь, который заключается в попытке создать подсеть с мусорным VPC-id и зоной доступности (ec2-create-subnet -c garbage -i 10.0.0.0/24 -z garbage). Сообщение об ошибке для этого вызова содержит список из AZs, которые могут размещать подсети, и я могу проанализировать этот вывод для информации, которую я ищу. Однако это похоже на взлом, и мне не нравится полагаться на поведение ошибок и конкретный формат сообщений об ошибках для такого рода вещей, если мне не нужно. Есть ли лучший способ?

UPDATE: добавление немного более подробной информации на основе комментариев...

звонки, которые я делаю в ec2-describe-availability-zones всегда возвращайте пять значений: us-east-1a через us-east - 1e, но мы можем создавать только подсети VPC в 1c, 1d и 1e. У нас есть экземпляры, работающие во всех зонах, кроме 1b, в которых я не смог запустить даже обычный экземпляр (он, похоже, постепенно отключается). Эта учетная запись существовала до выпуска функции VPC, поэтому я полагаю, что это несколько "устаревшая" учетная запись. Это может быть связано с несоответствием между тем, где мне разрешено создавать подсети и экземпляры VPC и когда ec2-describe-availability-zones возвращается. Я собираюсь отправить вопрос в службу поддержки AWS и сообщу о любых находках здесь.

2 ответов


после небольшого назад и вперед с поддержкой AWS, кажется, что моя ситуация является результатом решения со стороны Amazon не "скрывать" существующие зоны доступности даже после их поэтапного отказа для новых экземпляров, поскольку они полагали, что было бы запутанно скрывать AZ, который все еще может иметь запущенные экземпляры. Их рекомендация по определению VPC-способных AZs в моей ситуации либо жестко кодируется, либо методом проб и ошибок разочаровывает, но понятна.

Итак, мой решение сделать намеренно плохой запрос и проанализировать ошибку (см. ниже) кажется меньшим из нескольких зол.

> ec2-create-subnet -c garbage -i 10.0.0.0/24 -z garbage
Client.InvalidParameterValue: Value (garbage) for parameter availabilityZone is invalid. Subnets can currently only be created in the following availability zones: us-east-1c, us-east-1d, us-east-1e.

UPDATE: после еще нескольких последующих действий с поддержкой AWS я смог подтвердить, что это действительно связано с моей учетной записью pre-dating VPC, и что возможность различать "ограниченные" и VPC-способные AZs через API находится на их дорожной карте.


Я не уверен, что вы имеете в виду создание поддельной подсети, чтобы увидеть, какую зону доступности Вы можете использовать. Каждая подсеть в VPC находится в определенной зоне доступности. Согласно документации:

Q. может ли подсеть охватывать зоны доступности?

нет. Подсеть должна находиться в пределах одной зоны доступности.

Это в их часто задаваемых вопросах:http://aws.amazon.com/vpc/faqs/

поэтому в основном, когда вы создаете подсеть, вы можете сказать в какой зоне доступности должна быть.