Skip to main content

CloudFormation 서비스 다루기

CloudFormation

  • 코드를 통해 인프라를 프로비저닝, 관리하는 서비스
  • VPC 등의 AWS 네트워크 리소스 생성 및 관리를 자동화할 수 있음

AWS-ANS_CloudFormation1

구성 요소
  • Template: 인스턴스 유형, AMI ID, VPC, IP 주소 등의 인프라를 구성하기 위한 설정 값이 있는 JSON 또는 YAML 형식의 텍스트 파일로 이루어진 템플릿
  • Stack: Template을 사용하여 생성된 리소스
  • Change Set: Stack 리소스 변경 사항에 대한 세트
사용 예시
  • VPC 생성, VPC Peering 등을 자동화
  • VPC가 삭제되면 IP 주소 분배 관리를 자동으로 하기 위해 VPC의 IP 할당을 다시 확보하는 Lambda + CloudFormation을 사용하여 구성
  • 사용 가능한 CIDR 범위를 사용하여 서브넷을 생성할 수 있도록 Lambda + DynamoDB + CloudFormation을 사용하여 구성

내장 함수 Fn:CIDR CIDR 주소 블록의 배열을 반환합니다. 반환되는 CIDR 블록의 수는 count 매개변수에 따라 다릅니다. 이 함수에는 세 가지 매개변수가 있습니다.

  • ipBlock: 더 작은 CIDR 블록으로 분할할 사용자 지정 CIDR 주소 블록입니다.
  • count: 생성할 CIDR의 수입니다. 유효한 범위는 1에서 256 사이입니다.
  • cidrBits: CIDR의 서브넷 비트 수입니다. 예를 들어 이 매개변수에 값 "8"을 지정하면 마스크가 "/24"인 CIDR이 생성됩니다. /32 - /8 = /24
{
"Resources": {
"ExampleVpc": {
"Type": "AWS::EC2::VPC",
"Properties": {
"CidrBlock": "192.168.0.0/24"
}
}
},
"IPv6CidrBlock": {
"Type": "AWS::EC2::VPCCidrBlock",
"Properties": {
"AmazonProvidedIpv6CidrBlock": true,
"VpcId": { "Ref": "TutorialsDojo-VPC" }
}
},
"ExampleSubnet": {
"Type": "AWS::EC2::Subnet",
"DependsOn": "IPv6CidrBlock",
"Properties": {
"AssignIpv6AddressOnCreation": true,
"CidrBlock": {
"Fn::Select": [
0,
{
"Fn::Cidr": [
{ "Fn::GetAtt": ["TutorialDojo-VPC", "CidrBlock"] },
6,
5
]
}
]
},
"Ipv6CidrBlock": {},
"VpcId": { "Ref": "ExampleVpc" }
}
}
}
{ "Fn::Select" : [ 0, { "Fn::Cidr" : [{ "Fn::GetAtt" : [ "TutorialDojo-VPC", "CidrBlock" ]}, 6, 5]}]},
  • /32 - /5 = /27
  • Creates 6 CIDR with /27 subnet mask each