bash – 具有VPC功能的可用性区域在亚马逊

我发现在某些地区(如us-east-1),只有一些可用区域可用于创建子网(因此是VPC实例).在我的情况下,这些区域是us-east-1c,-1d和-1e,但是这些区别在于帐户.

我正在构建一个生成子网和VPC实例的脚本,所以有必要在程序上找出哪些区域是具有VPC功能的,特别是因为我知道为什么这些区域不能改变(或至少增长)随着时间的推移.

这篇文章基本上提出了同样的问题,但是接受的答案实际上并不提供我和asker正在寻找的信息(除非ec2-describe-availability-zones有一些VPC特定的参数,我不知道) Amazon VPC Availability

我已经找出了一个可能的解决方法,即尝试创建一个具有垃圾vpc-id和可用性区域(ec2-create-subnet -c garbage -i 10.0.0.0/24-z垃圾)的子网.此呼叫的错误消息包括可以托管子网的AZ列表,我可以解析该信息的输出.然而,这感觉就像一个黑客,我不喜欢依靠错误行为和这种事情的错误消息的具体格式,如果我不必.有没有更好的办法?

更新:根据注释添加一些更多的细节…

对ec2描述可用性区域的呼叫始终返回五个值:us-east-1a到us-east-1e,但是我们只能在1c,1d和1e中创建VPC子网.我们有除1b之外的所有区域运行的实例,我甚至无法启动一个常规实例(似乎正在逐步淘汰).这个帐户自VPC功能发布之前就已经存在了,所以这个帐号有点像我想象的“遗留”帐户.这可能与我被允许创建子网和VPC实例之间的差异以及ec2-describe-availability-zones返回时有什么关系.我将向AWS支持发布一个问题,并在此报告任何调查结果.

在AWS的支持下,来回展现,我的情况似乎是亚马逊决定不掩饰现有的可用区域的结果,即使在淘汰新实例之后,他们认为这将令人困惑隐藏可能仍具有运行实例的AZ.在我的情况下,他们建议确定具有VPC能力的AZ是要么是硬编码,要么是错误的 – 令人失望,而是可以理解的.

所以,我的解决方案是故意的错误请求和解析错误(见下文)似乎是少数几个罪恶中的一小部分.

> 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.

更新:在对AWS支持进行更多后续跟踪之后,我能够确认这与VPC之前的帐户确实相关,并且通过API区分“受限制”和支持VPC的AZs的能力是在他们的路线图.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...