한 눈에 보기
!Ref (Reference)
•
리소스나 파라미터의 값을 참조하는 함수
•
주로 Parameters 또는 Resources의 값을 가져올 때 사용됨
Resources:
MyVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
Outputs:
VPCId:
Value: !Ref MyVPC
YAML
복사
결과: "vpc-0abc123def456gh78"
!Sub (Substitute)
•
문자열을 동적으로 생성하는 함수
•
변수를 사용해 리소스 이름을 동적으로 설정할 때 유용함
Resources:
MyBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Sub "${AWS::AccountId}-mybucket"
YAML
복사
결과: "123456789012-mybucket"
!Sub "VPC Name: ${Environment}-${VPC}"
YAML
복사
결과: "VPC Name: dev-vpc”
!Join (문자열 합치기)
•
리스트의 값을 특정 구분자로 연결하는 함수
•
주로 서브넷 ID 리스트, 보안 그룹 리스트 등을 하나의 문자열로 합칠 때 사용됨
Outputs:
SubnetIds:
Value: !Join [ ",", [ "subnet-abc", "subnet-def" ] ]
YAML
복사
결과: "subnet-abc,subnet-def"
!Select (리스트에서 특정 값 선택)
•
리스트에서 특정 인덱스의 값을 가져오는 함수
!GetAZs와 같이 사용하면 특정 가용 영역(AZ)을 선택 할 수 있음
Resources:
MySubnet:
Type: AWS::EC2::Subnet
Properties:
AvailabilityZone: !Select [ 0, !GetAZs '' ]
YAML
복사
결과: "ap-northeast-2a"
!GetAZs (가용 영역 목록 가져오기)
•
현재 리전의 가용 영역(AZ) 목록을 가져오는 함수
!Select와 함께 사용해서 특정 가용 영역을 선택할 수 있음
•
리전을 생략하면 현재 스택이 실행 중인 리전의 AZ를 반환함
!GetAZs ''
YAML
복사
결과: [ "ap-northeast-2a", "ap-northeast-2b" ]
!FindInMap (매핑 값 가져오기)
•
Mappings에서 특정 값을 조회하는 함수
•
리전별 AMI ID와 같은 정보를 저장하고 가져올 때 유용함
Mappings:
RegionMap:
ap-northeast-2:
AMI: "ami-12345678"
us-east-1:
AMI: "ami-87654321"
Resources:
MyEC2:
Type: AWS::EC2::Instance
Properties:
ImageId: !FindInMap [ "RegionMap", "ap-northeast-2", "AMI" ]
YAML
복사
결과: "ami-12345678"
!GetAtt (리소스 속성 값 가져오기)
•
특정 리소스의 속성을 참조하는 함수
•
주로 VPC ID, 서브넷 ID, 보안 그룹 ID, NAT 게이트웨이의 할당 ID 등을 가져올 때 사용
Resources:
MyVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
Outputs:
VPCArn:
Value: !GetAtt MyVPC.Arn
YAML
복사
결과: "arn:aws:ec2:ap-northeast-2:123456789012:vpc/vpc-0abc123def456gh78"
!GetAtt MyNatGateway.AllocationId
YAML
복사
결과: "eipalloc-12345678"
!If (조건문)
•
Conditions을 기반으로 다른 값을 반환하는 함수
•
주로 특정 환경(dev/prod)에 따라 리소스 설정을 다르게 할 때 사용됨
Conditions:
CreateProdResources: !Equals [ !Ref Environment, "prod" ]
Resources:
MyEC2:
Type: AWS::EC2::Instance
Properties:
InstanceType: !If [ CreateProdResources, "t3.large", "t3.micro" ]
YAML
복사
•
"prod" 환경이면 "t3.large"
•
아니면 "t3.micro"
!Equals (두 값 비교)
•
두 값이 같은지 비교하여 true 또는 false 반환
!If와 함께 사용해서 조건을 설정할 때 활용됨
Conditions:
IsProd: !Equals [ !Ref Environment, "prod" ]
YAML
복사
결과: true (Environment 값이 "prod"일 때)
!Not (조건 반전)
조건이 true이면 false, false이면 true를 반환
!If와 함께 사용하면 조건을 반대로 설정할 수 있음
Conditions:
IsNotProd: !Not [ !Equals [ !Ref Environment, "prod" ] ]
YAML
복사
결과:
•
"prod"이면 false
•
"prod"이 아니면 true

