

새로운 *CloudFormation 템플릿 참조 안내서*입니다. 북마크와 링크를 업데이트하세요. CloudFormation을 시작하는 데 도움이 필요한 경우 [AWS CloudFormation 사용 설명서](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)를 참조하세요.

# 조건 함수
<a name="intrinsic-function-reference-conditions"></a>

`Fn::If` 또는 `Fn::Equals` 등과 같은 내장 함수를 사용하여 조건부 로직을 기반으로 스택 리소스를 생성하고 구성할 수 있습니다. 이러한 조건은 스택 생성 또는 업데이트 중에 평가됩니다. 모든 조건을 정의한 후 템플릿의 `Resources` 및 `Outputs` 섹션에서 조건을 리소스 또는 리소스 속성과 연결할 수 있습니다.

고급 시나리오의 경우 `Fn::And` 또는 `Fn::Or` 함수를 사용하여 조건을 결합하거나`Fn::Not`을 사용하여 조건 값을 무효화할 수 있습니다. 조건을 중첩하여 더 복잡한 조건부 로직을 생성할 수도 있습니다.

템플릿에서 조건을 처음 사용하는 경우 먼저 *AWS CloudFormation 사용자 가이드*의 [CloudFormation 템플릿 Conditions 구문](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/conditions-section-structure.html) 주제를 검토하는 것이 좋습니다.

**참고**  
템플릿의 `Conditions` 섹션에서 `Fn::If` 조건을 제외한 모든 조건을 정의해야 합니다. `Metadata` 속성, `UpdatePolicy` 속성, `Resources` 및 `Outputs` 섹션에 있는 속성 값에서 `Fn::If` 조건을 사용할 수 있습니다.

**Topics**
+ [`Fn::And`](#intrinsic-function-reference-conditions-and)
+ [`Fn::Equals`](#intrinsic-function-reference-conditions-equals)
+ [`Fn::If`](#intrinsic-function-reference-conditions-if)
+ [`Fn::Not`](#intrinsic-function-reference-conditions-not)
+ [`Fn::Or`](#intrinsic-function-reference-conditions-or)
+ [지원되는 함수](#w2aac24c20c25)
+ [샘플 템플릿](#conditions-sample-templates)

## `Fn::And`
<a name="intrinsic-function-reference-conditions-and"></a>

지정된 모든 조건이 true로 평가되면 `true`가 반환되고, 조건 중 하나라도 false로 평가되는 경우 `false`가 반환됩니다. `Fn::And`는 AND 연산자 역할을 합니다. 포함할 수 있는 최소 조건 수는 2이고 최대값은 10입니다.

### 선언
<a name="intrinsic-function-reference-conditions-and-syntax"></a>

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

```
"Fn::And": [{{{condition}}}, {{{...}}}]
```

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

전체 함수 이름의 구문:

```
Fn::And: [{{condition}}]
```

짧은 형식의 구문:

```
!And [{{condition}}]
```

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

condition  <a name="fn-and-condition"></a>
`true` 또는 `false`로 평가되는 조건입니다.

### `Fn::And` 사용 예
<a name="w2aac24c20c13b9"></a>

다음 `MyAndCondition`이 true로 평가되려면 참조된 보안 그룹 이름이 `sg-mysggroup`과 같고 `SomeOtherCondition`이 true로 평가되어야 합니다.

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

```
"MyAndCondition": {
   "Fn::And": [
      {"Fn::Equals": ["sg-mysggroup", {"Ref": "ASecurityGroup"}]},
      {"Condition": "SomeOtherCondition"}
   ]
}
```

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

```
MyAndCondition: !And
  - !Equals ["sg-mysggroup", !Ref ASecurityGroup]
  - !Condition SomeOtherCondition
```

## `Fn::Equals`
<a name="intrinsic-function-reference-conditions-equals"></a>

두 값이 같은지 여부를 비교합니다. 두 값이 같으면 `true`를 반환하고 다르면 `false`를 반환합니다.

### 선언
<a name="intrinsic-function-reference-conditions-equals-syntax"></a>

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

```
"Fn::Equals" : ["{{value_1}}", "{{value_2}}"]
```

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

전체 함수 이름의 구문:

```
Fn::Equals: [{{value_1}}, {{value_2}}]
```

짧은 형식의 구문:

```
!Equals [{{value_1}}, {{value_2}}]
```

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

value  
비교하려는 문자열 값.

### `Fn::Equals` 사용 예
<a name="w2aac24c20c15b9"></a>

다음 `IsProduction` 조건이 true로 평가되려면 `EnvironmentType` 파라미터 값이 `prod`와 같아야 합니다.

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

```
"IsProduction" : {
   "Fn::Equals": [
      {"Ref": "EnvironmentType"},
      "prod"
   ]
}
```

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

```
IsProduction:
  !Equals [!Ref EnvironmentType, prod]
```

## `Fn::If`
<a name="intrinsic-function-reference-conditions-if"></a>

지정된 조건이 `true`로 평가되면 특정 값을 반환하고 지정된 조건이 `false`로 평가되면 다른 값을 반환합니다. 현재 CloudFormation에서는 `Metadata` 속성, `UpdatePolicy` 속성, 템플릿의 `Resources` 섹션과 `Outputs` 섹션에 있는 속성 값에서 `Fn::If` 내장 함수를 지원합니다. `AWS::NoValue` 가상 파라미터를 반환 값으로 사용하여 해당 속성을 제거할 수 있습니다.

### 선언
<a name="intrinsic-function-reference-conditions-if-syntax"></a>

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

```
"Fn::If": [{{condition_name}}, {{value_if_true}}, {{value_if_false}}]
```

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

전체 함수 이름의 구문:

```
Fn::If: [{{condition_name}}, {{value_if_true}}, {{value_if_false}}]
```

짧은 형식의 구문:

```
!If [{{condition_name}}, {{value_if_true}}, {{value_if_false}}]
```

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

condition\_name  <a name="condition_name"></a>
조건 섹션의 조건에 대한 참조입니다. 조건의 이름을 사용하여 조건을 참조합니다.

value\_if\_true  <a name="value_if_true"></a>
지정된 조건이 true로 평가되는 경우에 반환될 값입니다.

value\_if\_false  <a name="value_if_false"></a>
지정된 조건이 `false`로 평가되는 경우에 반환될 값입니다.

### `Fn::If` 사용 예
<a name="w2aac24c20c19b9"></a>

**Topics**
+ [조건부로 리소스 선택](#w2aac24c20c19b9b5)
+ [조건부 출력](#w2aac24c20c19b9b7)
+ [조건부 배열 값](#w2aac24c20c19b9b9)
+ [조건부 속성 및 속성 값](#w2aac24c20c19b9c11)
+ [조건부 업데이트 정책](#w2aac24c20c19b9c13)

#### 조건부로 리소스 선택
<a name="w2aac24c20c19b9b5"></a>

다음 예제에서는 Amazon EC2 리소스 정의의 `Fn::If` 함수를 사용하여 인스턴스와 연결할 보안 그룹 리소스를 결정합니다. `CreateNewSecurityGroup` 조건이 true로 평가되면, CloudFormation은 참조된 값 `NewSecurityGroup`(템플릿의 다른 곳에서 생성된 보안 그룹)을 사용하여 `SecurityGroupIds` 속성을 지정합니다. `CreateNewSecurityGroup`이 false인 경우 CloudFormation은 참조된 값 `ExistingSecurityGroupId`(기존 보안 그룹을 참조하는 파라미터)을 사용합니다.

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

```
"Resources": {
  "EC2Instance": {
    "Type": "AWS::EC2::Instance",
    "Properties": {
      "ImageId": "ami-0abcdef1234567890",
      "InstanceType": "t3.micro",
      "SecurityGroupIds": {
        "Fn::If": [
          "CreateNewSecurityGroup",
          [{"Ref": "NewSecurityGroup"}],
          [{"Ref": "ExistingSecurityGroupId"}]
        ]
      }]
    }
  }
}
```

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

```
Resources:
  EC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-0abcdef1234567890
      InstanceType: t3.micro
      SecurityGroupIds: !If
        - CreateNewSecurityGroup
        - [!Ref NewSecurityGroup]
        - [!Ref ExistingSecurityGroupId]
```

#### 조건부 출력
<a name="w2aac24c20c19b9b7"></a>

템플릿의 `Output` 섹션에서 `Fn::If` 함수를 사용하여 정보를 조건부로 출력할 수 있습니다. 다음 코드 조각에서 `CreateNewSecurityGroup` 조건이 true로 평가되면 CloudFormation에서 `NewSecurityGroup` 리소스의 보안 그룹 ID를 출력합니다. 조건이 false이면 CloudFormation은 `ExistingSecurityGroup` 리소스의 보안 그룹 ID를 출력합니다.

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

```
"Outputs" : {
  "SecurityGroupId" : {
    "Description" : "Group ID of the security group used.",
    "Value" : {
      "Fn::If" : [
        "CreateNewSecurityGroup",
        {"Ref" : "NewSecurityGroup"},
        {"Ref" : "ExistingSecurityGroupId"}
      ]
    }
  }
}
```

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

```
Outputs:
  SecurityGroupId: 
    Description: Group ID of the security group used.
    Value: !If [CreateNewSecurityGroup, !Ref NewSecurityGroup, !Ref ExistingSecurityGroupId]
```

#### 조건부 배열 값
<a name="w2aac24c20c19b9b9"></a>

다음 예제에서는 `Fn::If`를 사용하여 조건에 따라 다른 배열 값을 조건부로 제공합니다. `MoreThan2AZs` 조건이 true로 평가되면 3개의 퍼블릭 서브넷을 사용합니다. 그렇지 않으면 2개의 퍼블릭 서브넷만 사용합니다.

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

```
"Subnets": {
  "Fn::If": [
    "MoreThan2AZs",
    [
      {"Fn::ImportValue": "PublicSubnet01"},
      {"Fn::ImportValue": "PublicSubnet02"},
      {"Fn::ImportValue": "PublicSubnet03"}
    ],
    [
      {"Fn::ImportValue": "PublicSubnet01"},
      {"Fn::ImportValue": "PublicSubnet02"}
    ]
  ]
}
```

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

```
Subnets:
  Fn::If:
    - MoreThan2AZs
    - - Fn::ImportValue: PublicSubnet01
      - Fn::ImportValue: PublicSubnet02
      - Fn::ImportValue: PublicSubnet03
    - - Fn::ImportValue: PublicSubnet01
      - Fn::ImportValue: PublicSubnet02
```

#### 조건부 속성 및 속성 값
<a name="w2aac24c20c19b9c11"></a>

다음 예제에서는 `Fn::If` 함수에서 `AWS::NoValue` 가상 파라미터를 사용합니다. 스냅샷 ID가 제공된 경우에만 조건에서 Amazon RDS DB 인스턴스에 대한 스냅샷을 사용합니다. `UseDBSnapshot` 조건이 true로 평가되면 CloudFormation에서는 `DBSnapshotIdentifier` 속성에 대한 `DBSnapshotName` 파라미터 값을 사용합니다. 조건이 false로 평가되면 CloudFormation이 `DBSnapshotIdentifier` 속성을 제거합니다.

또한 Amazon RDS DB 인스턴스의 `AllocatedStorage` 속성에 `Fn::If` 함수를 사용합니다. `IsProduction` 조건이 true로 평가되면 스토리지 크기가 `100`으로 설정됩니다. 그렇지 않으면 `20`로 설정됩니다.

##### JSON
<a name="intrinsic-function-reference-conditions-if-example3.json"></a>

```
"MyDatabase" : {
  "Type" : "AWS::RDS::DBInstance",
  "Properties": {
    "DBInstanceClass": "db.t3.micro",
    "AllocatedStorage": {
      "Fn::If": [
        "IsProduction",
        100,
        20
      ]
    },
    "Engine" : "MySQL",
    "EngineVersion" : "5.5",
    "MasterUsername" : { "Ref" : "DBUser" },
    "MasterUserPassword" : { "Ref" : "DBPassword" },
    "DBParameterGroupName" : { "Ref" : "MyRDSParamGroup" },
    "DBSnapshotIdentifier" : {
      "Fn::If" : [
        "UseDBSnapshot",
        {"Ref" : "DBSnapshotName"},
        {"Ref" : "AWS::NoValue"}
      ]
    }
  }
}
```

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

```
MyDatabase:
  Type: AWS::RDS::DBInstance
  Properties:
    DBInstanceClass: db.t3.micro
    AllocatedStorage: !If [IsProduction, 100, 20]
    Engine: MySQL
    EngineVersion: 5.5
    MasterUsername: !Ref DBUser
    MasterUserPassword: !Ref DBPassword
    DBParameterGroupName: !Ref MyRDSParamGroup
    DBSnapshotIdentifier: !If [UseDBSnapshot, !Ref DBSnapshotName, !Ref "AWS::NoValue"]
```

#### 조건부 업데이트 정책
<a name="w2aac24c20c19b9c13"></a>

다음은 `RollingUpdates` 조건이 true로 평가되는 경우에만 Auto Scaling 업데이트 정책을 제공하는 코드 조각입니다. 조건이 false로 평가되면 CloudFormation이 `AutoScalingRollingUpdate` 업데이트 정책을 제거합니다.

##### JSON
<a name="intrinsic-function-reference-conditions-if-example4.json"></a>

```
"UpdatePolicy": {
  "Fn::If": [
    "RollingUpdates",
    {
      "AutoScalingRollingUpdate": {
        "MaxBatchSize": 2,
        "MinInstancesInService": 2,
        "PauseTime": "PT0M30S"
      }
    },
    {
      "Ref": "AWS::NoValue"
    }
  ]
}
```

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

```
UpdatePolicy: !If
  - RollingUpdates
  - AutoScalingRollingUpdate:
      MaxBatchSize: 2
      MinInstancesInService: 2
      PauseTime: PT0M30S
  - !Ref "AWS::NoValue"
```

## `Fn::Not`
<a name="intrinsic-function-reference-conditions-not"></a>

`false`로 평가되는 조건에 대해 `true`를 반환하고 `true`로 평가되는 조건에 대해 `false`를 반환합니다. `Fn::Not`는 NOT 연산자 역할을 합니다.

### 선언
<a name="intrinsic-function-reference-conditions-not-syntax"></a>

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

```
"Fn::Not": [{{{condition}}}]
```

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

전체 함수 이름의 구문:

```
Fn::Not: [{{condition}}]
```

짧은 형식의 구문:

```
!Not [{{condition}}]
```

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

condition  <a name="condition"></a>
`Fn::Equals` 또는 `true`로 평가되는 조건(예: `false`)입니다.

### `Fn::Not` 사용 예
<a name="w2aac24c20c21b9"></a>

다음 `EnvCondition` 조건이 true로 평가되려면 `EnvironmentType` 파라미터 값이 `prod`와 같지 않아야 합니다.

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

```
"MyNotCondition" : {
   "Fn::Not" : [{
      "Fn::Equals" : [
         {"Ref" : "EnvironmentType"},
         "prod"
      ]
   }]
}
```

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

```
MyNotCondition:
  !Not [!Equals [!Ref EnvironmentType, prod]]
```

## `Fn::Or`
<a name="intrinsic-function-reference-conditions-or"></a>

지정된 모든 조건 중 하나라도 true로 평가되면 `true`가 반환되고, 조건 모두가 false로 평가되는 경우 `false`가 반환됩니다. `Fn::Or`는 OR 연산자 역할을 합니다. 포함할 수 있는 최소 조건 수는 2이고 최대값은 10입니다.

### 선언
<a name="intrinsic-function-reference-conditions-or-syntax"></a>

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

```
"Fn::Or": [{{{condition}}}, {{{...}}}]
```

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

전체 함수 이름의 구문:

```
Fn::Or: [{{condition, ...}}]
```

짧은 형식의 구문:

```
!Or [{{condition, ...}}]
```

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

condition  
`true` 또는 `false`로 평가되는 조건입니다.

### `Fn::Or` 사용 예
<a name="w2aac24c20c23b9"></a>

다음 `MyOrCondition`이 true로 평가되려면 참조된 보안 그룹 이름이 `sg-mysggroup`과 같거나 `SomeOtherCondition`이 true로 평가되어야 합니다.

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

```
"MyOrCondition" : {
   "Fn::Or" : [
      {"Fn::Equals" : ["sg-mysggroup", {"Ref" : "ASecurityGroup"}]},
      {"Condition" : "SomeOtherCondition"}
   ]
}
```

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

```
MyOrCondition:
  !Or [!Equals [sg-mysggroup, !Ref ASecurityGroup], Condition: SomeOtherCondition]
```

## 지원되는 함수
<a name="w2aac24c20c25"></a>

`Fn::If` 조건에서 다음과 같은 함수를 사용할 수 있습니다.
+ `Fn::Base64`
+ `Fn::FindInMap`
+ `Fn::GetAtt`
+ `Fn::GetAZs`
+ `Fn::If`
+ `Fn::Join`
+ `Fn::Select`
+ `Fn::Sub`
+ `Ref`

`Fn::Equals` 및 `Fn::Or` 등 나머지 모든 조건 함수에서 다음과 같은 함수를 사용할 수 있습니다.
+ `Fn::FindInMap`
+ `Ref`
+ 기타 조건 함수

## 샘플 템플릿
<a name="conditions-sample-templates"></a>

### 프로덕션, 개발 또는 테스트 스택에 대한 리소스를 조건부로 생성
<a name="w2aac24c20c27b3"></a>

비슷하지만 약간 조정된 스택을 생성하려는 경우도 있습니다. 예를 들어, 프로덕션 애플리케이션에 사용할 템플릿이 필요할 수 있습니다. 개발 또는 테스트에 사용할 수 있도록 동일한 프로덕션 스택을 생성하려고 합니다. 하지만 개발 및 테스트의 경우 프로덕션 레벨 스택에 포함되는 추가 용량 중 일부가 필요하지 않을 수도 있습니다. 그 대신 다음 예제와 같이 환경 유형 입력 파라미터를 사용하여 프로덕션, 개발 또는 테스트에 특정한 스택 리소스를 조건부로 생성할 수 있습니다.

`prod` 파라미터에 대해 `dev`, `test` 또는 `EnvType`를 지정할 수 있습니다. 템플릿에서는 환경 유형별로 다른 인스턴스 유형을 지정합니다. 인스턴스 유형은 대용량의 컴퓨팅 최적화된 인스턴스 유형부터 작은 범용 인스턴스 유형까지 다양합니다. 인스턴스 유형을 조건부로 지정하려면 템플릿의 `Conditions` 섹션에서 `CreateProdResources` 조건(`EnvType` 파라미터 값이 `prod`와 같으면 true로 평가됨)과 `CreateDevResources` 조건(파라미터 값이 `dev`와 같으면 true로 평가됨)을 정의합니다.

`InstanceType` 속성에서 템플릿은 두 `Fn::If` 내장 함수를 중첩하여 사용할 인스턴스 유형을 결정합니다. `CreateProdResources` 조건이 true이면 인스턴스 유형은 `c5.xlarge`이고, false이면 `CreateDevResources` 조건이 평가됩니다. `CreateDevResources` 조건이 true이면 인스턴스 유형이 `t3.medium`이고, 그렇지 않으면 `t3.small`입니다.

인스턴스 유형 이외에 프로덕션 환경에서는 Amazon EC2 볼륨을 생성하여 인스턴스에 연결합니다. 조건이 true로 평가되는 경우에만 리소스가 생성되도록 `MountPoint` 및 `NewVolume` 리소스는 `CreateProdResources` 조건과 연결됩니다.

**Example JSON**  

```
{
  "AWSTemplateFormatVersion" : "2010-09-09",
  "Parameters" : {
    "EnvType" : {
      "Description" : "Environment type.",
      "Default" : "test",
      "Type" : "String",
      "AllowedValues" : ["prod", "dev", "test"],
      "ConstraintDescription" : "must specify prod, dev, or test."
    }
  },
  "Conditions" : {
    "CreateProdResources" : {"Fn::Equals" : [{"Ref" : "EnvType"}, "prod"]},
    "CreateDevResources" : {"Fn::Equals" : [{"Ref" : "EnvType"}, "dev"]}
  },
  "Resources" : {
    "EC2Instance" : {
      "Type" : "AWS::EC2::Instance",
      "Properties" : {
        "ImageId" : "ami-1234567890abcdef0",
        "InstanceType" : { "Fn::If" : [
          "CreateProdResources",
          "c5.xlarge",
          {"Fn::If" : [
            "CreateDevResources",
            "t3.medium",
            "t3.small"
          ]}
        ]}
      }
    },
    "MountPoint" : {
      "Type" : "AWS::EC2::VolumeAttachment",
      "Condition" : "CreateProdResources",
      "Properties" : {
        "InstanceId" : { "Ref" : "EC2Instance" },
        "VolumeId"  : { "Ref" : "NewVolume" },
        "Device" : "/dev/sdh"
      }
    },
    "NewVolume" : {
      "Type" : "AWS::EC2::Volume",
      "Condition" : "CreateProdResources",
      "Properties" : {
        "Size" : "100",
        "AvailabilityZone" : { "Fn::GetAtt" : [ "EC2Instance", "AvailabilityZone" ]}
      }
    }
  }
}
```

**Example YAML**  

```
AWSTemplateFormatVersion: "2010-09-09"
Parameters:
  EnvType:
    Description: Environment type.
    Default: test
    Type: String
    AllowedValues: [prod, dev, test]
    ConstraintDescription: must specify prod, dev, or test.
Conditions:
  CreateProdResources: !Equals [!Ref EnvType, prod]
  CreateDevResources: !Equals [!Ref EnvType, "dev"]
Resources:
  EC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-1234567890abcdef0
      InstanceType: !If [CreateProdResources, c5.xlarge, !If [CreateDevResources, t3.medium, t3.small]]    
  MountPoint:
    Type: AWS::EC2::VolumeAttachment
    Condition: CreateProdResources
    Properties:
      InstanceId: !Ref EC2Instance
      VolumeId: !Ref NewVolume
      Device: /dev/sdh
  NewVolume:
    Type: AWS::EC2::Volume
    Condition: CreateProdResources
    Properties:
      Size: 100
      AvailabilityZone: !GetAtt EC2Instance.AvailabilityZone
```

**참고**  
조건을 사용하여 리소스를 생성하는 더 복잡한 예는 [`Condition` 속성](aws-attribute-condition.md) 주제를 참조하세요.