本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Fn::GetAZs
Fn::GetAZs
內部函數會傳回陣列,以按字母順序列出指定區域的可用區域。由於客戶可以存取不同可用區域,因此 Fn::GetAZs
內部函數可讓範本作者撰寫範本來因應呼叫使用者的存取。如此一來,您就不需要將特定區域的可用區域完整清單寫死。
重要
Fn::GetAZs
函數只會傳回具有預設子網路的可用區域;在沒有任何可用區域具備預設子網路的情況下,則會傳回所有可用區域。
類似於來自的響應 describe-availability-zones
AWS CLI 命令,不能保證Fn::GetAZs
函數結果的順序,並且可以在添加新的可用區域時更改。
IAM權限
使用該Fn::GetAZs
功能所需的許可取決於您啟動 Amazon EC2 執行個體的平台。對於這兩個平台,您都需要對 Amazon EC2 DescribeAvailabilityZones
和DescribeAccountAttributes
行動的許可。對於 EC2-VPC,您還需要 Amazon EC2 DescribeSubnets
行動的許可。
宣告
JSON
{ "Fn::GetAZs" : "
region
" }
參數
- region
-
您想要取得其可用區域的區域名稱。
您可以使用
AWS::Region
虛擬參數來指定建立堆疊的區域。指定空白字串就相當於指定AWS::Region
。
傳回值
區域的可用區域清單。
範例
評估區域
對於這些範例, CloudFormation 評估Fn::GetAZs
為下列陣列 — 假設使用者已在 Region 中建立堆疊:us-east-1
[ "us-east-1a", "us-east-1b", "us-east-1c", "us-east-1d", "us-east-1e" ]
JSON
{ "Fn::GetAZs" : "" } { "Fn::GetAZs" : { "Ref" : "AWS::Region" } } { "Fn::GetAZs" : "us-east-1" }
YAML
Fn::GetAZs: "" Fn::GetAZs: Ref: "AWS::Region" Fn::GetAZs: us-east-1
指定子網路的可用區域
下列範例使用 Fn::GetAZs
指定子網路的可用區域:
JSON
"mySubnet" : { "Type" : "AWS::EC2::Subnet", "Properties" : { "VpcId" : { "Ref" : "VPC" }, "CidrBlock" : "10.0.0.0/24", "AvailabilityZone" : { "Fn::Select" : [ 0, { "Fn::GetAZs" : "" } ] } } }
YAML
mySubnet: Type: "AWS::EC2::Subnet" Properties: VpcId: !Ref VPC CidrBlock: 10.0.0.0/24 AvailabilityZone: Fn::Select: - 0 - Fn::GetAZs: ""
嵌套函數與短形式 YAML
下列範例顯示使用簡短格式的巢狀內建函式的有效模式。YAML您不可以連續巢狀短格式函數,因此類似 !GetAZs !Ref
的模式是無效的。
YAML
AvailabilityZone: !Select - 0 - !GetAZs Ref: 'AWS::Region'
YAML
AvailabilityZone: !Select - 0 - Fn::GetAZs: !Ref 'AWS::Region'
支援的函數
您可以在函數中使用 Ref Fn::GetAZs
函數。