<aside> <img src="notion://custom_emoji/872842ef-88e8-4d29-b9f3-5aadcf8c0cc1/1787ed89-b6d1-8082-b46e-007a6fa9e1fd" alt="notion://custom_emoji/872842ef-88e8-4d29-b9f3-5aadcf8c0cc1/1787ed89-b6d1-8082-b46e-007a6fa9e1fd" width="40px" />
!Ref (Reference)
Parameters 또는 Resources의 값을 가져올 때 사용됨Resources:
MyVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
Outputs:
VPCId:
Value: !Ref MyVPC
결과: "vpc-0abc123def456gh78"
</aside>
<aside> <img src="notion://custom_emoji/872842ef-88e8-4d29-b9f3-5aadcf8c0cc1/1787ed89-b6d1-8082-b46e-007a6fa9e1fd" alt="notion://custom_emoji/872842ef-88e8-4d29-b9f3-5aadcf8c0cc1/1787ed89-b6d1-8082-b46e-007a6fa9e1fd" width="40px" />
!Sub (Substitute)
Resources:
MyBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Sub "${AWS::AccountId}-mybucket"
결과: "123456789012-mybucket"
!Sub "VPC Name: ${Environment}-${VPC}"
결과: "VPC Name: dev-vpc”
</aside>
<aside> <img src="notion://custom_emoji/872842ef-88e8-4d29-b9f3-5aadcf8c0cc1/1787ed89-b6d1-8082-b46e-007a6fa9e1fd" alt="notion://custom_emoji/872842ef-88e8-4d29-b9f3-5aadcf8c0cc1/1787ed89-b6d1-8082-b46e-007a6fa9e1fd" width="40px" />
!Join (문자열 합치기)
Outputs:
SubnetIds:
Value: !Join [ ",", [ "subnet-abc", "subnet-def" ] ]
결과: "subnet-abc,subnet-def"
</aside>
<aside> <img src="notion://custom_emoji/872842ef-88e8-4d29-b9f3-5aadcf8c0cc1/1787ed89-b6d1-8082-b46e-007a6fa9e1fd" alt="notion://custom_emoji/872842ef-88e8-4d29-b9f3-5aadcf8c0cc1/1787ed89-b6d1-8082-b46e-007a6fa9e1fd" width="40px" />
!Select (리스트에서 특정 값 선택)
!GetAZs와 같이 사용하면 특정 가용 영역(AZ)을 선택 할 수 있음
Resources:
MySubnet:
Type: AWS::EC2::Subnet
Properties:
AvailabilityZone: !Select [ 0, !GetAZs '' ]
결과: "ap-northeast-2a"
</aside>
<aside> <img src="notion://custom_emoji/872842ef-88e8-4d29-b9f3-5aadcf8c0cc1/1787ed89-b6d1-8082-b46e-007a6fa9e1fd" alt="notion://custom_emoji/872842ef-88e8-4d29-b9f3-5aadcf8c0cc1/1787ed89-b6d1-8082-b46e-007a6fa9e1fd" width="40px" />
!GetAZs (가용 영역 목록 가져오기)
!Select와 함께 사용해서 특정 가용 영역을 선택할 수 있음
!GetAZs ''
결과: [ "ap-northeast-2a", "ap-northeast-2b" ]
</aside>
<aside> <img src="notion://custom_emoji/872842ef-88e8-4d29-b9f3-5aadcf8c0cc1/1787ed89-b6d1-8082-b46e-007a6fa9e1fd" alt="notion://custom_emoji/872842ef-88e8-4d29-b9f3-5aadcf8c0cc1/1787ed89-b6d1-8082-b46e-007a6fa9e1fd" width="40px" />
!FindInMap (매핑 값 가져오기)
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" ]
결과: "ami-12345678"
</aside>
<aside> <img src="notion://custom_emoji/872842ef-88e8-4d29-b9f3-5aadcf8c0cc1/1787ed89-b6d1-8082-b46e-007a6fa9e1fd" alt="notion://custom_emoji/872842ef-88e8-4d29-b9f3-5aadcf8c0cc1/1787ed89-b6d1-8082-b46e-007a6fa9e1fd" width="40px" />
!GetAtt (리소스 속성 값 가져오기)
Resources:
MyVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
Outputs:
VPCArn:
Value: !GetAtt MyVPC.Arn
결과: "arn:aws:ec2:ap-northeast-2:123456789012:vpc/vpc-0abc123def456gh78"
!GetAtt MyNatGateway.AllocationId
결과: "eipalloc-12345678"
</aside>
<aside> <img src="notion://custom_emoji/872842ef-88e8-4d29-b9f3-5aadcf8c0cc1/1787ed89-b6d1-8082-b46e-007a6fa9e1fd" alt="notion://custom_emoji/872842ef-88e8-4d29-b9f3-5aadcf8c0cc1/1787ed89-b6d1-8082-b46e-007a6fa9e1fd" width="40px" />
!If (조건문)
Conditions:
CreateProdResources: !Equals [ !Ref Environment, "prod" ]
Resources:
MyEC2:
Type: AWS::EC2::Instance
Properties:
InstanceType: !If [ CreateProdResources, "t3.large", "t3.micro" ]
"prod" 환경이면 "t3.large""t3.micro"
</aside><aside> <img src="notion://custom_emoji/872842ef-88e8-4d29-b9f3-5aadcf8c0cc1/1787ed89-b6d1-8082-b46e-007a6fa9e1fd" alt="notion://custom_emoji/872842ef-88e8-4d29-b9f3-5aadcf8c0cc1/1787ed89-b6d1-8082-b46e-007a6fa9e1fd" width="40px" />
!Equals (두 값 비교)
true 또는 false 반환!If와 함께 사용해서 조건을 설정할 때 활용됨
Conditions:
IsProd: !Equals [ !Ref Environment, "prod" ]
결과: true (Environment 값이 "prod"일 때)
</aside>
<aside> <img src="notion://custom_emoji/872842ef-88e8-4d29-b9f3-5aadcf8c0cc1/1787ed89-b6d1-8082-b46e-007a6fa9e1fd" alt="notion://custom_emoji/872842ef-88e8-4d29-b9f3-5aadcf8c0cc1/1787ed89-b6d1-8082-b46e-007a6fa9e1fd" width="40px" />
!Not (조건 반전)
조건이 true이면 false, false이면 true를 반환
!If와 함께 사용하면 조건을 반대로 설정할 수 있음
Conditions:
IsNotProd: !Not [ !Equals [ !Ref Environment, "prod" ] ]
결과:
"prod"이면 false"prod"이 아니면 true
</aside>