我發現在某些區域(如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