AutoScaling
AWS CloudFormation
- 작업은 스택과 탬플릿으로 작업. 스택을 생성할 때마다 템플릿에 설명된 리소스를 프로비저닝
장점: 인프라 관리 간소화, 신속하게 인프라 복제, 인프라 변경 쉽게제어, 추적
- public 과 pri 서브넷으로 나눔
- public : 웹 서버
- private : DB
* 웹서버와 DB 통신으로 구성
구성요소
템플릿
- Json 또는 Yaml
- 스택에서 프로비저닝할 리소스 설명
- cloudformation designer 또는 텍스트 편집기를 사용해서 생성
Stack
- 스택을 삭제하면 관련 리소스 모두 삭제
변경세트
- 리소스를 변경하기 전에 제안된 변경사항 요약
- 리소스에 미치는 영향 확인
VSCode 실행
C:\Users\USER> cd /
C:\> mkdir aws
C:\> cd aws
C:\aws> code . ⇐ 현재 디렉터리를 프로젝트 루트로 설한 VSCode를 실행
C:\aws\CreateVPC_01.yaml
vpcgatewayattachment
내장함수 : Ref 내장함수
- 스택을 관리하는데 도움
- Ref : 지정된 리소스에 해당하는 정보를 반환
json : {"Ref" : " - "}
yaml : !Ref -
vpc cidrblock < toturialvpc
Fn::Select
- 내장함수 Fn::Select는 인덱스별 객체 목록에서 객체 하나를 반환
짧은 형식 >> !Select [ index, listOfObjects ]
AWS::Region cloudformation
- 가상 파라미터 참조
- 리전을 나타내는 문자열 반환
publicRouteTable
- 라우트 정보
public : 인터넷과의 연결
private : 인터넷과의 비연결
Outputs
- 튜토리얼 vpc
- az1
Fn::GetAtt
- 리소스의 속성 값을 반환함
스택생성
- 템플릿 관리하는 단위
- cloudformation >> 생성 > 준비된 템플릿 > 템플릿 파일 업로드 > yaml 파일 선택
Outputs:
VPC: ⇐ 키
Description: Toturial VPC ID ⇐ 설명
Value: !Ref ToturialVPC ⇐ 값
AZ1:
Description: Availability Zone 1
Value: !GetAtt
- PublicSubnet01
vpc
- 생성된 vpc 정보에서 태그 항목에서 비교
*리소스, 배치한 서브넷 등 주의
스택 업데이트
- 템플릿 수정 > 퍼블릭 서브넷 과 프라이빗 서브넷을 각각 한개씩 추가하고 라우팅 테이블에 연결
CreateVPC-01.yaml 파일 복사 > CreateVPC_02.yaml파일 생성
- 수정 public subnet, private subnet 추가
- publicsubnet routetableAssociation
- outputs에서 가용영역 3번 출력
이 과정 후에 스택 업데이트
- 스택 > 업데이트 > 템플릿 지정> 2번 선택
3번 : 인터넷 연결 게이트웨이 없음
2번 : 연결
스택에서 출력 결과
- AZ3가 추가된 것 확인
스택 삭제
- 생성시에 리소스까지 전부 삭제됨, 하지만 스택을 만들때 사용한 템플릿은 따로 삭제해줘야 함
- 템플릿 저장된 파일 > S3 버킷에서 별도로 삭제해야 함 > 비우고 삭제
VPC 확인
- 스택을 통해서 만들어진 리소스 삭제
서브넷 확인
라우팅 테이블 확인
인터넷 게이트웨이 확인
CloudFormation을 이용해서 웹 애플리케이션 배포
- vpc 안에다가
- 템플릿 생성 > webappliction.json
- 디폴트 VPC 생성
코드
- AWSInstanceType2Arch
- AWSRegionArch2AMI
*Fn::FindMap 첫번째 함수에 들어가있음
- 사용할 값들을 미리 정의하고잇음
- Instance > Meta태그 설정
* AWS:: CloudFormation::Init > CloudFormation 템플릿에서 사용되는 리소스 유형 중 하나
- cfn-init 헬퍼 스크립트에 대해서 구성 작업을 정의
- EC2 인스턴스를 생성할 때 초기 설정, 패키지 설치, 파일 다운로드, 명령 실행 및 다른 구성 단계를 선언적으로 정의
- packages > 사전에 패키징 요소 다운로드 및 설치
- files > 지정된 파일을 만듦 (EC2 인스턴스에 파일 생성)
- services > 인스턴스가 실행될 때 활성화, 비활성화되는 서비스 정의
리전 > 키 밸류
"ImageId": { "Fn::FindInMap": [ "AWSRegionArch2AMI", { "Ref": "AWS::Region" },
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
18개 값 중에서 리전과 일치하는 값을 반환
예) 서울 리전인 경우 { "HVM64": "ami-0a10b2721688ce9d2", "HVMG2": "NOT_SUPPORTED" }을
반환
⇒ 아래쪽에 있는 코드가 반환하는 "HVM64"에 해당하는 값, "ami-0a10b2721688ce9d2"을
최종적으로 반환
{ "Fn::FindInMap": [ "AWSInstanceType2Arch", { "Ref": "InstanceType" }, "Arch" ] }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4개의 값 중에서 사용자가 선택한 인스턴스 타입에 해당하는 값을 반환
예) 사용자가 t2.micro를 선택했다면 { "Arch": "HVM64" }를 반환
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ "Arch": "HVM64" } 값에서 "Arch"에 해당하는 "HVM64"를 반환
] }
'수업' 카테고리의 다른 글
12/6: AWS RDS (1) | 2023.12.05 |
---|---|
12/5 :AWS 명령어, CLI 이용 (0) | 2023.12.05 |
12/1: vpc, ec2 (0) | 2023.12.01 |
11/30 :클라우드 (0) | 2023.11.30 |
11/27 : 데이터 3법 (0) | 2023.11.27 |