17

我有一個cloudformation腳本,試圖創建一個VPC,每個AZ有一個子網。有沒有辦法讓雲信息查詢可用區域以創建子網?

當我運行:

aws ec2 describe-availablity-zones 

我得到4個區返回:

"AvailabilityZones": [ 
    { 
     "State": "available", 
     "RegionName": "us-east-1", 
     "Messages": [], 
     "ZoneName": "us-east-1a" 
    }, 
    { 
     "State": "available", 
     "RegionName": "us-east-1", 
     "Messages": [], 
     "ZoneName": "us-east-1b" 
    }, 
    { 
     "State": "available", 
     "RegionName": "us-east-1", 
     "Messages": [], 
     "ZoneName": "us-east-1c" 
    }, 
    { 
     "State": "available", 
     "RegionName": "us-east-1", 
     "Messages": [], 
     "ZoneName": "us-east-1d" 
    } 
] 

然而,當我嘗試創建我的籌碼,我得到一個錯誤:

"ResourceStatusReason": "Value (us-east-1a) for parameter availabilityZone 
    is invalid. Subnets can currently only be created in the following 
    availability zones: us-east-1c, us-east-1b, us-east-1d.", 

我用

指定AZ

有沒有辦法檢查AZ是否真的可用於創建子網?

回答

6

不幸的是我有同樣的問題。 CloudFormation中無法執行此操作,並且每個AWS賬戶的區域可能不同。這是VPC基礎設施的限制,並且很可能不會改變。你唯一的選擇將是硬編碼您在CloudFOrmation模板而不是FN ::選擇已經找到了區,例如:

「AvailabilityZone」:「我們東-1B」

或者,如果你離開AvailabilityZone空白,默認行爲是AWS將自動爲您選擇一個。

+0

不能讓它們留空,因爲我們在每個AZ中創建一個帶有子網的VPC - 問題並不是每個返回的AZ都允許子網! – chris

+0

因此,如果一個區域不允許使用VPC子網,那麼您使用它在VPC中託管的是什麼?簡單地忽略該區域並處理支持它的3個區域。 – Arya

+0

這是一個手動過程 - 如果我使用索引0,1和2創建基於Fn :: Select的子網,它有時會失敗,因爲實際上有4個AZ,但不是每個都允許子網 – chris

6

這可能對CLI方法或您確切的方案沒有幫助 - 但通過AWS管理控制檯,這可以順利進行。

隨着CloudFormation參數的最新更新,您將能夠針對與指定的AZ相關的AZ進行指定。

在DR/DR演習和使CFN模板區域獨立的過程中,這將會非常方便。

enter image description here

"Parameters": { 
    "SubnetAZ": { 
     "Description": "Availability Zone of the Subnet", 
     "Type": "AWS::EC2::AvailabilityZone::Name" 
    } 
} 

更多信息關於CloudFormation參數

+0

Fn :: GetAZs將提供可用和可用的可用區域,只要您在每個AZ中有一個子網默認的vpc!順便說一下,只要你不手動刪除它們,所有新的aws帳戶都有。 – hellomichibye

+0

@Naveen我認爲在你的代碼段中,你的意思是:'List '而不是'AWS :: EC2 :: AvailabilityZone :: Name' – Somar

2

FN :: GetAZs會,只要你有每個AZ子網默認VPC提供可用的和可用的可用性區域!順便說一下,只要你不手動刪除它們,所有新的aws帳戶都有。

+0

我已經看到Fn :: GetAZs返回不可用區域。 –

+0

那麼你沒有默認子網 – hellomichibye

+0

這是一個非常有趣的_「功能」_。 AWS文檔中的任何地方都記錄了這一點嗎? –

相關問題