수업

12/4: AutoScaling

진태현 2023. 12. 1. 17:36

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