

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

# `Fn::Select`
<a name="intrinsic-function-reference-select"></a>

組み込み関数 `Fn::Select` は、インデックスによってオブジェクトのリストから 1 つのオブジェクトを返します。

**重要**  
`Fn::Select` では、null 値のチェックや、インデックスが配列の範囲外であるかどうかのチェックは行われません。どちらの条件でもスタックエラーが発生するため、有効なインデックスを選択し、リストに null 以外の値が含まれるようにする必要があります。

## 宣言
<a name="w2aac24c58b7"></a>

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

```
{ "Fn::Select" : [ index, listOfObjects ] }
```

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

完全関数名の構文:

```
Fn::Select: [ index, listOfObjects ] 
```

短縮形の構文:

```
!Select [ index, listOfObjects ]
```

## パラメータ
<a name="w2aac24c58b9"></a>

index  
取得するオブジェクトのインデックスです。これは、ゼロから N-1 の値である必要があります。N は、配列内の要素の数を表します。

listOfObjects  
選択するオブジェクトが含まれているリストです。このリストは null であってはならず、null エントリを含めることもできません。

## 戻り値
<a name="w2aac24c58c11"></a>

選択されたオブジェクトです。

## 例
<a name="w2aac24c58c13"></a>

### 基本的な の例
<a name="w2aac24c58c13b3"></a>

次の例は、`"grapes"` を返します。

#### JSON
<a name="intrinsic-function-reference-select-example0.json"></a>

```
{ "Fn::Select" : [ "1", [ "apples", "grapes", "oranges", "mangoes" ] ] }
```

#### YAML
<a name="intrinsic-function-reference-select-example0.yaml"></a>

```
!Select [ "1", [ "apples", "grapes", "oranges", "mangoes" ] ]
```

 

### カンマ区切りリストのパラメータ型
<a name="w2aac24c58c13b5"></a>

`Fn::Select` を使用して、`CommaDelimitedList` パラメーターからオブジェクトを選択することもできます。`CommaDelimitedList` パラメーターは、関連するパラメーターの値を結合するために使用できます。そうすることで、テンプレート内のパラメーターの総数を減らすことができます。たとえば、次のパラメーターは、3 つの CIDR ブロックのカンマ区切りリストを指定します。

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

```
"Parameters" : {
  "DbSubnetIpBlocks": {
    "Description": "Comma-delimited list of three CIDR blocks",
    "Type": "CommaDelimitedList",
      "Default": "10.0.48.0/24, 10.0.112.0/24, 10.0.176.0/24"
  }
}
```

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

```
Parameters: 
  DbSubnetIpBlocks: 
    Description: "Comma-delimited list of three CIDR blocks"
    Type: CommaDelimitedList
    Default: "10.0.48.0/24, 10.0.112.0/24, 10.0.176.0/24"
```

3 つの CIDR ブロックのうちの 1 つを指定するには、次のサンプルスニペットで示されているように、同じテンプレートの Resources セクションで `Fn::Select` を使用します。

#### JSON
<a name="intrinsic-function-reference-select-example2.json"></a>

```
"Subnet0": {
  "Type": "AWS::EC2::Subnet",
    "Properties": {
      "VpcId": { "Ref": "VPC" },
      "CidrBlock": { "Fn::Select" : [ "0", {"Ref": "DbSubnetIpBlocks"} ] }
    }
}
```

#### YAML
<a name="intrinsic-function-reference-select-example2.yaml"></a>

```
Subnet0: 
  Type: AWS::EC2::Subnet
  Properties: 
    VpcId: !Ref VPC
    CidrBlock: !Select [ 0, !Ref DbSubnetIpBlocks ]
```

 

### ネストされた関数と短い形式の YAML
<a name="w2aac24c58c13b7"></a>

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

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

```
AvailabilityZone: !Select 
  - 0
  - !GetAZs 
    Ref: 'AWS::Region'
```

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

```
AvailabilityZone: !Select 
  - 0
  - Fn::GetAZs: !Ref 'AWS::Region'
```

## サポートされている関数
<a name="w2aac24c58c15"></a>

`Fn::Select` インデックス値では、`Ref` 関数と `Fn::FindInMap` 関数を使用できます。

オブジェクトの `Fn::Select` リストでは、次の関数を使用できます。
+ `Fn::FindInMap`
+ `Fn::GetAtt`
+ `Fn::GetAZs`
+ `Fn::If`
+ `Fn::Split`
+ `Ref`