組み込み関数 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 関数を使用できます。