我发现在某些区域(如us-east-1)中,只有一些可用区域可用于创建子网(并因此可用于VPC实例)。在我的情况下,这些区域是us-east-1c,-1d和-1e,但这些区域因账户而异。Amazon中支持VPC的可用区域
我正在构建一个生成子网和VPC实例的脚本,因此,以编程方式查找哪些区域具有VPC功能是非常有用的,特别是因为我知道为什么该区域集不能更改(或随着时间的推移至少会增长)。
这篇文章基本上提出了同样的问题,但接受的答案实际上并没有提供我和那个提问者正在寻找的信息(除非ec2-describe-availability-zones具有一些VPC特定的参数,我不是知道):Amazon VPC Availability
我已经想出了一种可能的解决方法,即尝试使用垃圾vpc-id和可用区域(ec2-create-subnet -c garbage -i 10.0.0.0/24 -z garbage
)创建一个子网。此调用的错误消息包括能够托管子网的AZ的列表,并且我可以解析输出以查找我正在查找的信息。但是,这感觉就像一个黑客,我不喜欢依赖错误行为和错误消息的具体格式,如果我不必这样做。有没有更好的办法?
UPDATE:通过美国东部-1E美东-1A,但我们只能创建VPC子网:添加基于注释更详细一点...
呼叫我做出ec2-describe-availability-zones
总是返回五个值在1c,1d和1e。我们有除1b之外的所有区域运行的实例,其中我甚至无法启动一个常规实例(它似乎正逐渐被淘汰)。自从VPC功能发布之前,此帐户已存在,因此我认为它有点“遗留”帐户。这可能与我允许创建子网和VPC实例的位置之间的差异以及ec2-describe-availability-zones返回时的差异有关。我将向AWS支持发布问题,并将在此处报告任何发现。
@downvoter我可以问为什么downvote?我很好奇为什么这是一个糟糕的问题,并且很乐意接受任何有建设性的反馈来改进它。 – atkretsch
你错误地解释了你在我们东方1发现的东西。这并不是说这些是唯一具有vpc功能的可用区域,而是那些可用区域的标签,可供您使用。如果您的帐户有一个名为“us-east-1c”的可用性区域,则可以将该AZ用于VPC。如果没有,你不能。链接问题中的OP没有意识到并非所有区域都向每个帐户显示3个AZ,或者它们并不总是“a”,“b”和“c”。 DescribeAvailabilityZones做你想做的事。 –
@ Michael-sqlbot:感谢您的洞察力,但ec2-describe-availability-zones返回1a到1e,尽管只有1c-1e是VPC功能的(并且注意,即使1b看起来完全没用)。所以对于这个帐户,似乎所有可用区域(周期)的集合!=启用VPC的可用区域的集合。请参阅我的编辑更多细节。 – atkretsch