

새로운 *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`는 인덱스별 객체 목록에서 객체 하나를 반환합니다.

**중요**  
인덱스가 어레이 범위를 벗어나는 경우 `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 ]
```

## Parameters
<a name="w2aac24c58b9"></a>

인덱스  
가져올 객체의 인덱스입니다. 이 항목은 0부터 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` 파라미터를 사용하여 관련 파라미터의 값을 결합할 수 있습니다. 이렇게 하면 템플릿의 총 파라미터 수가 감소합니다. 예를 들어, 다음 파라미터는 세 개의 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"
```

세 개의 CIDR 블록 중 하나를 지정하려면 다음 예제 코드 조각과 같이 동일한 템플릿의 리소스 섹션에서 `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`