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
を指定したと見なされます。
戻り値
リージョンのアベイラビリティーゾーンのリスト。
例
リージョンを評価する
これらの例では、スタックが 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 関数を使用できます。