2014-03-30 92 views
11

我發現在某些區域(如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支持發佈問題,並將在此處報告任何發現。

+0

@downvoter我可以問爲什麼downvote?我很好奇爲什麼這是一個糟糕的問題,並且很樂意接受任何有建設性的反饋來改進它。 – atkretsch

+0

你錯誤地解釋了你在我們東方1發現的東西。這並不是說這些是唯一具有vpc功能的可用區域,而是那些可用區域的標籤,可供您使用。如果您的帳戶有一個名爲「us-east-1c」的可用性區域,則可以將該AZ用於VPC。如果沒有,你不能。鏈接問題中的OP沒有意識到並非所有區域都向每個帳戶顯示3個AZ,或者它們並不總是「a」,「b」和「c」。 DescribeAvailabilityZones做你想做的事。 –

+1

@ Michael-sqlbot:感謝您的洞察力,但ec2-describe-availability-zones返回1a到1e,儘管只有1c-1e是VPC功能的(並且注意,即使1b看起來完全沒用)。所以對於這個帳戶,似乎所有可用區域(週期)的集合!=啓用VPC的可用區域的集合。請參閱我的編輯更多細節。 – atkretsch

回答

9

有點來回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,並有能力「限制」之間的區別VPC-和通過API提供能力強大的AZ是他們的路線圖。

1

我不確定你的意思是創建一個假子網,看看你可以使用哪個可用區。 VPC中的每個子網都位於特定的可用區域中。根據文檔:

Q.子網可以跨度可用區嗎?

否。子網必須位於單個可用區域內。

這是在他們的常見問題解答:http://aws.amazon.com/vpc/faqs/

所以基本上,當你創建一個子網,你可以知道哪些可用區域,它應該是在

+0

謝謝里科。我知道每個子網都位於可用區域 - 我想要的是通過API以編程方式創建子網時可供選擇的可用區域列表(我知道通過AWS控制檯GUI創建時顯示的選項)。根據上面的Michael-sqlbot的評論,這聽起來像我的帳戶擁有非VPC啓用的AZ可能是一種不尋常的情況。我會詢問AWS支持以獲取更多信息。 – atkretsch

+0

噢,並進一步澄清 - 當您使用無效的AZ名稱調用ec2-create-subnet時返回的錯誤消息包含有效的AZ名稱列表。因此,我現在的解決方法是調用ec2-create-subnet,它將故意失敗並解析錯誤消息以獲取正確的列表。 – atkretsch