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 DescribeAvailabilityZones および DescribeAccountAttributes アクションのアクセス権限が必要です。また、EC2-VPC では、Amazon EC2 DescribeSubnets アクションのアクセス権限も必要です。

宣言

JSON

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

YAML

完全関数名の構文:

Fn::GetAZs: region

短縮形の構文:

!GetAZs region

パラメータ

region

アベイラビリティーゾーンの取得対象となるリージョンの名前。

スタックの作成先となるリージョンは AWS::Region 擬似パラメータを使用して指定できます。空の文字列を指定した場合、AWS::Region を指定したと見なされます。

戻り値

リージョンのアベイラビリティーゾーンのリスト。

リージョンを評価する

これらの例では、スタックが us-east-1 リージョンで作成されたものと見なされ、CloudFormation により Fn::GetAZs は、次の配列として評価されます。

[ "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'

サポートされている関数

Fn::GetAZs 関数で Ref 関数を使用できます。