Области доступности VPC в Амазонке

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

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

Это сообщение задавало в основном тот же вопрос, но принятый ответ фактически не предоставил информацию я и того, кто искал (если только зоны ec2-describe-availability не имеют определенного параметра VPC, я не знаю of): Доступность Amazon VPC

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

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

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

Ответ 1

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

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

> 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 я смог подтвердить, что это действительно связано с моим VPC до начала сессии, и что способность различать "ограниченные" и VPC-совместимые AZ с помощью API находится в их дорожной карте.

Ответ 2

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

Q. Может ли диапазон зон подсети подсети?

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

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

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