

これは新しい CloudFormation テンプレートリファレンスガイドです。ブックマークとリンクを更新してください。CloudFormation の開始方法については、『[AWS CloudFormation ユーザーガイド](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)』を参照してください。

# `Fn::GetAZs`
<a name="intrinsic-function-reference-getavailabilityzones"></a>

組み込み関数 `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` アクションのアクセス権限も必要です。

## 宣言
<a name="intrinsic-function-reference-getazs-declaration"></a>

### JSON
<a name="intrinsic-function-reference-getazs-syntax.json"></a>

```
{ "Fn::GetAZs" : "リージョン" }
```

### YAML
<a name="intrinsic-function-reference-getazs-syntax.yaml"></a>

完全関数名の構文:

```
Fn::GetAZs: リージョン
```

短縮形の構文:

```
!GetAZs リージョン
```

## パラメータ
<a name="intrinsic-function-reference-getazs-parameters"></a>

リージョン  <a name="region"></a>
アベイラビリティーゾーンの取得対象となるリージョンの名前。  
スタックの作成先となるリージョンは `AWS::Region` 擬似パラメータを使用して指定できます。空の文字列を指定した場合、`AWS::Region` を指定したと見なされます。

## 戻り値
<a name="intrinsic-function-reference-getazs-return-value"></a>

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

## 例
<a name="intrinsic-function-reference-getazs-examples"></a>

### リージョンを評価する
<a name="intrinsic-function-reference-getazs-examples-evaluate-region"></a>

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

`[ "us-east-1a", "us-east-1b", "us-east-1c", "us-east-1d", "us-east-1e" ]`

#### JSON
<a name="intrinsic-function-reference-getazs-example1.json"></a>

```
1. { "Fn::GetAZs" : "" }
2. { "Fn::GetAZs" : { "Ref" : "AWS::Region" } }
3. { "Fn::GetAZs" : "us-east-1" }
```

#### YAML
<a name="intrinsic-function-reference-getazs-example1.yaml"></a>

```
1. Fn::GetAZs: ""
2. Fn::GetAZs:
3.   Ref: "AWS::Region"
4. Fn::GetAZs: us-east-1
```

 

### サブネットのアベイラビリティーゾーンの指定
<a name="intrinsic-function-reference-getazs-examples-subnet-az"></a>

次の例では、`Fn::GetAZs` を使用してサブネットのアベイラビリティーゾーンを指定します。

#### JSON
<a name="intrinsic-function-reference-getazs-example.json"></a>

```
"mySubnet" : {
  "Type" : "AWS::EC2::Subnet",
  "Properties" : {
    "VpcId" : { 
      "Ref" : "VPC"   
    },
    "CidrBlock" : "10.0.0.0/24",
    "AvailabilityZone" : {
      "Fn::Select" : [ 
        0, 
        { 
          "Fn::GetAZs" : "" 
        } 
      ]
    }
  }
}
```

#### YAML
<a name="intrinsic-function-reference-getazs-example.yaml"></a>

```
mySubnet: 
  Type: AWS::EC2::Subnet
  Properties: 
    VpcId: 
      !Ref VPC
    CidrBlock: 10.0.0.0/24
    AvailabilityZone: 
      Fn::Select: 
        - 0
        - Fn::GetAZs: ""
```

 

### ネストされた関数と短い形式の YAML
<a name="intrinsic-function-reference-getazs-examples-nested-functions"></a>

次の例では、ネストされた組み込み関数と短い形式の YAML を使用して有効なパターンを示します。短い形式の関数を連続してネストすることはできないため、`!GetAZs !Ref` のようなパターンは無効です。

#### YAML
<a name="intrinsic-function-reference-getavailabilityzones-example3.yaml"></a>

```
1. AvailabilityZone: !Select
2.   - 0
3.   - !GetAZs
4.     Ref: 'AWS::Region'
```

#### YAML
<a name="intrinsic-function-reference-getavailabilityzones-example4.yaml"></a>

```
1. AvailabilityZone: !Select
2.   - 0
3.   - Fn::GetAZs: !Ref 'AWS::Region'
```

## サポートされている関数
<a name="intrinsic-function-reference-getazs-supported-functions"></a>

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