Fn::GetAZs - AWS CloudFormation

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Fn::GetAZs

Fn::GetAZs 內部函數會傳回陣列,以按字母順序列出指定區域的可用區域。由於客戶可以存取不同可用區域,因此 Fn::GetAZs 內部函數可讓範本作者撰寫範本來因應呼叫使用者的存取。如此一來,您就不需要將特定區域的可用區域完整清單寫死。

重要

Fn::GetAZs 函數只會傳回具有預設子網路的可用區域;在沒有任何可用區域具備預設子網路的情況下,則會傳回所有可用區域。

類似於來自的響應 describe-availability-zones AWS CLI 命令,不能保證Fn::GetAZs函數結果的順序,並且可以在添加新的可用區域時更改。

IAM權限

使用該Fn::GetAZs功能所需的許可取決於您啟動 Amazon EC2 執行個體的平台。對於這兩個平台,您都需要對 Amazon EC2 DescribeAvailabilityZonesDescribeAccountAttributes行動的許可。對於 EC2-VPC,您還需要 Amazon EC2 DescribeSubnets 行動的許可。

宣告

JSON

{ "Fn::GetAZs" : "region" }

YAML

完整函式名稱的語法:

Fn::GetAZs: region

短格式的語法:

!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 函數。