해당 YAML스크립트는 Github에서 받으세요 : https://github.com/armyost/AWSCloudformation.git
구성할 아키텍쳐
YAML 스크립트 시작
AWSTemplateFormatVersion: 2010-09-09
#AWSTemplateFormatVersion
#AWSTemplateFormatVersion은 Template format version을 의미하며 현재는 2010–09–09 값만 사용 가능합니다.
Description: Make a VPC 2
Resources:
#Resources는 CloudFormation를 통해 생성할 자원을 정의하는 곳입니다. 참고로 생성되는 자원간의 의존성은
#CloudFormation이 판단하여 생성해줍니다.
ToturialVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 172.0.0.0/16
EnableDnsHostnames: true
InternetGateway:
Type: AWS::EC2::InternetGateway
AttachGateway:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
VpcId: !Ref ToturialVPC
#!는 내장함수를 호출합니다. (이 문서 하단에 내장함수에 대한 상세내용 있음)
#Ref는 리소스이름으로 템플릿의 다른 리소스를 참조
InternetGatewayId: !Ref InternetGateway
PublicSubnet01:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref ToturialVPC
CidrBlock: 172.0.0.0/24
AvailabilityZone: !Select
#!Select는 인덱스별 객체목록에서 파라미터 0 과 !GetAZs ''를 보내어 객체 하나를 반환합니다.
- '0'
- !GetAZs ''
#지정된 리전의 가용 영역을 알파벳순으로 나열하는 어레이를 반환합니다
#AvailableZone을 한줄로 표시하면 AvailabilityZone: !Select [ 0, !GetAZs '' ] 입니다.
PrivateSubnet01:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref ToturialVPC
CidrBlock: 172.0.1.0/24
AvailabilityZone: !Select
- '0'
- !GetAZs ''
PublicSubnet02:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref ToturialVPC
CidrBlock: 172.0.2.0/24
AvailabilityZone: !Select
- '1'
- !GetAZs ''
PrivateSubnet02:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref ToturialVPC
CidrBlock: 172.0.3.0/24
AvailabilityZone: !Select
- '1'
- !GetAZs ''
PublicRouteTable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref ToturialVPC
PublicRoute:
Type: AWS::EC2::Route
Properties:
RouteTableId: !Ref PublicRouteTable
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref InternetGateway
PublicSubnetRouteTableAssociation1:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref PublicSubnet01
RouteTableId: !Ref PublicRouteTable
PublicSubnetRouteTableAssociation2:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref PublicSubnet02
RouteTableId: !Ref PublicRouteTable
PrivateRouteTable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref ToturialVPC
PrivateSubnetRouteTableAssociation1:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref PrivateSubnet01
RouteTableId: !Ref PrivateRouteTable
PrivateSubnetRouteTableAssociation2:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref PrivateSubnet02
RouteTableId: !Ref PrivateRouteTable
Outputs:
VPC:
Description: Toturial VPC ID
Value: !Ref ToturialVPC
AZ1:
Description: Availability Zone 1
Value: !GetAtt
- PublicSubnet01
- AvailabilityZone
AZ2:
Description: Availability Zone 2
Value: !GetAtt
- PublicSubnet02
- AvailabilityZone
내장함수 표현법
JSON
{ "Fn::Base64" : valueToEncode }
YAML
Fn::Base64: valueToEncode
YAML 짧은구문 !Base64 valueToEncode
내장함수 설명
(https://docs.aws.amazon.com/ko_kr/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference.html 를 참고해도좋습니다.)
Base64
내장 함수는 입력 문자열의 Base64 표시를 반환합니다. 이 함수는 일반적으로 UserData 속성을 통해 인코딩된 데이터를 Amazon EC2 인스턴스에 전달하는 데 사용됩니다.
Cidr
내장 함수 Fn::Cidr은 CIDR 주소 블록의 어레이를 반환합니다. 반환된 CIDR 블록의 수는 count 파라미터에 따라 다릅니다.
FindInMap
Fn::FindInMap 내장 함수는 Mappings 섹션에서 선언된 2수준 맵의 키에 해당하는 값을 반환합니다.
GetAtt
Fn::GetAtt 내장 함수는 템플릿의 리소스에서 속성 값을 반환합니다. 특정 리소스의 GetAtt 반환 값에 대한 자세한 내용은 리소스 및 속성 참조의 해당 리소스에 대한 설명서를 참조하십시오.
GetAZs
Fn::GetAZs 내장 함수는 지정된 리전의 가용 영역을 알파벳순으로 나열하는 어레이를 반환합니다. 고객이 다른 가용 영역에 액세스할 수 있으므로 템플릿 작성자는 Fn::GetAZs 내장 함수를 사용하여 호출하는 사용자의 액세스 권한에 따라 조정되는 템플릿을 작성할 수 있습니다. 그러면 지정된 리전에 대한 전체 가용 영역 목록을 하드코딩할 필요가 없습니다.
ImportValue
내장 함수 Fn::ImportValue는 다른 스택에서 내보낸 출력의 값을 반환합니다. 일반적으로 이 함수를 사용하여 교차 스택 참조를 생성합니다. 다음 예제 템플릿 조각에서 스택 A는 VPC 보안 그룹 값을 내보내고 스택 B는 이 값을 가져옵니다.
Join
내장 함수 Fn::Join은 지정된 구분 기호로 구분된 값 세트를 단일 값에 추가합니다. 구분 기호가 빈 문자열이면 값 세트는 구분 기호 없이 연결됩니다.
Select
내장 함수 Fn::Select는 인덱스별 객체 목록에서 객체 하나를 반환합니다.
Split
결과로 얻은 문자열 목록에서 요소를 선택할 수 있도록 문자열을 문자열 값 목록으로 분할하려면 Fn::Split 내장 함수를 사용합니다. 쉼표(,)와 같은 구분 기호를 사용하여 분할 위치를 지정합니다. 문자열을 분할한 후 Fn::Select 함수를 사용하여 특정 요소를 선택합니다.
예를 들어, 쉼표로 구분된 서브넷 ID 문자열을 스택 템플릿으로 가져올 경우 각 쉼표로 문자열을 분할할 수 있습니다. 서브넷 ID 목록에서 Fn::Select 내장 함수를 사용하여 리소스에 대한 서브넷 ID를 지정합니다.
Sub
내장 함수 Fn::Sub는 입력 문자열의 변수를 지정한 값으로 바꿉니다. 템플릿에 이 함수를 사용해 스택을 생성하거나 업데이트해야만 사용할 수 있는 값이 포함된 명령 또는 출력을 만들 수 있습니다.
Transform
내장 함수 Fn::Transform은 스택 템플릿의 일부분인 사용자 지정 처리를 수행하는 매크로를 지정합니다. 매크로를 통해 찾기 및 바꾸기 작업 같은 간단한 작업부터 전체 템플릿 변형과 같은 작업까지 템플릿에 대한 사용자 지정 처리를 수행할 수 있습니다. 자세한 정보는 AWS CloudFormation 매크로를 사용하여 템플릿에 사용자 지정 처리 수행 단원을 참조하세요.
또한 Fn::Transform을 사용하여 AWS CloudFormation에서 호스팅된 매크로인 AWS::Include 변환 변형을 호출할 수 있습니다.
Ref
Ref 내장 함수는 지정된 파라미터 또는 리소스에 대한 정보를 반환합니다.
파라미터의 논리적 이름을 지정하면 파라미터의 값이 반환됩니다.
리소스의 논리적 이름을 지정하면 해당 리소스를 참조하는 데 일반적으로 사용할 수 있는 값이 반환됩니다(예: 물리적 ID).
템플릿에서 리소스를 선언하는 데 이름으로 또 다른 템플릿 리소스를 지정해야 하는 경우 Ref를 사용하여 해당하는 다른 리소스를 참조할 수 있습니다. 일반적으로, Ref는 리소스의 이름을 반환합니다. 예를 들어 AWS::AutoScaling::AutoScalingGroup에 대한 참조는 Auto Scaling 그룹 리소스의 이름을 반환합니다.
일부 리소스의 경우 리소스 측면에서 또 다른 중요한 의미를 지닌 식별자가 반환됩니다. 예를 들어, AWS::EC2::EIP 리소스는 IP 주소를, AWS::EC2::Instance는 인스턴스 ID를 반환합니다.
|
'IaaS > 퍼블릭클라우드' 카테고리의 다른 글
(AWS) AWS의 CI/CD 툴 - CloudWatch (0) | 2021.06.06 |
---|---|
(AWS) AWS의 CI/CD 툴 - AWS Cloud9 (0) | 2021.06.06 |
(AWS) 서버리스 AWS Lamdba 개요와 사용법 (0) | 2021.06.05 |
(AWS) AWS Cloudformation 템플릿 (0) | 2021.06.02 |
(AWS) IAM 이란? (0) | 2021.05.30 |