Management Service
CloudFormation
[ Cloud Native IaC Tools ]
- IaC : 콘솔환경이 아닌, 코드로 리소스를 구축 → 저장가능, 여러 환경해서복사하여 구축가능
→ 대표적으로 terraform : 특정 벤더사에 종속되지 않고 모든 클라우드환경에서 사용가능 - CSP가 제공하는 IaC 솔루션은 클라우드 시스템에 종속 ( 벤더사에서 운영관점의 문제를 담당하여 해결 및 지원가능 )
Cloudformation : AWS 환경안에서만 동작하는 IaC tool, GUI방식으로 작업가능 코드를 템플릿 형태로 만들어 관리 & STACK을 생성 → AWS Resource의 생성, 관리, 업데이트를 자동화
[ CloudFormation 구성 ]
- templates : 인프라가 코드로 정의되어있는 문서파일 ( JSON/YAML형식 )
- AWSTemplateFormatVersion( 문서버전 ), Description( 역할 및 목적설명 )
- Parameters : 템플릿 내부에 값을 전달, 리소스 영역에서 변수처럼 사용가능( !Ref + 파라미터명 ) → Metadata : 선언된 파라미터들을 그룹화하고 순서정리
- Mappings : 파라미터 값을 조건부로 값을 지정 ( ex. 리전에 따라 다른 위치의 AMI를 선택하여 사용 )
- Resources ( 유일한 필수값, 생성할 리소스 정보를 기록, 구조정의 )
- Outputs : 스택 생성후 구성된 리소스 값을 반환 → 추후 사용을 가능하게 함 ( ex. 스택구축후 VPC ID값을 가져와 다음 처리가능하게 함 )
- cloudformation : 템플릿을 실행시켜주는 주체 → 스택생성, 스택업데이트, 에러탐지
- Stack : 생성이후 저장 → 리소스를 관리하는 단위
[ CloudFomration 서비스 구성 실습 ]
IaC를 이용하여 network baseline 리소스( VPC, subnet )을 구축 → 서울리전에 VPC2, 버지니아 리전에 VPC, 프랑크프루티 리전에 VPC
(1) yaml파일에 IaC를 정의
(2) sh파일에서 변수처리로 S3관련 파라미터 세팅( BUCKET_NAME완성 ) & 데이터 업로드
(3) 콘솔 및 CLI cloud formation에서 S3내용으로 스택생성
[ ap-northeast-2 Region에 Network Baseline 추가 ]
(1) CloudFormation YAML 파일 S3 업로드
- 버킷생성( Vscode는 S3full 권한을 가짐 ) : aws s3 mb s3://이름
- 버킷에 코드데이터(yaml)를 올리고 S3의 Object URL(HTTP)를 반환 : aws s3 cp 템플릿파일(yaml) S3저장의obj주소
(2) Resource Section 이용 VPC 생성
💡 Resource Section : cloudformation이 생성 및 관리할 AWS 리소스를 선언
Seoul Region의 VPC2를 만듬 ( type과 properties 지정 )
(3) 콘솔에서 스택생성 → 업데이트
스택 생성 : 기존템플릿 → 작성한 yaml파일이 저장되어 있는 S3의 주소 OBJECT_URL 정보 입력
스택 세부 정보 지정(파라미터) : 가용영역지정
서울영역에 새로운 VPC가 생성됨
[ Parameter Section 활용 Public Subnet 생성 ]
💡 Parameters Section : 스택 생성 시 사용자로부터 입력값을 받아 템플릿의 동적 구성을 가능하게 하는 섹션 ( 하드코딩을 방지하고 재사용성을 높일 수 있음 )
02. subnet_resource.sh : 버킷을 생성하지 않고 바로 업로드
02. subnet_resource.yaml
!Ref : Parameters 영역에서 정의한 값을 Resources영역에서 활용
- !Ref VpcCIDR : 파라미터 VpcCIDR에 지정된 값을 리소스 사용시 활용
- !Ref VPC : 상단의 리소스가 만들어지고 난 이후에 → 위의 리소스에서 값을 즉시 참조
VPC하나, 서브넷 두 개를 생성
S3에 코드 업로드후 결과 URL 반환( 동일 )
콘솔에서 스택 업데이트 → 기본템플릿 교체, S3오브젝트 경로를 새롭게 바꿈 ( yaml파일의 교체 )
스택을 생성하지 않고 기존 것에 추가하여 업데이트( 코드가 지속적으로 변하는 상황 )
스택 세부 정보 지정 : 가용영역 파라미터 값 입력
VPC는 생성하지 않고(중복) 서브넷을 2개생성하여 업데이트
[ Output Section 활용 ]
💡 Outputs Section : CloudFormation 스택 생성 또는 업데이트 완료 후, 중요한 정보를 반환하도록 함( 생성된 리소스의 속성값 ARN, URL, ID 등을 출력 → 외부에서 사용가능하게 함 )
03. resource_output.yaml : IGW 생성 & 라우팅 테이블 생성 & & PublicSubnetAssociation로 ???
outputs섹션 : Value의 값이 출력됨 → 콘솔의 출력탭에서 그 내용을 확인가능
콘솔에서 스택 업데이트 → 기본템플릿 교체, S3오브젝트 경로를 새롭게 바꿈 ( yaml파일의 교체 )
입력했던 파라미터 값이 고정( default값도 입력하지 않음 )
새로 서브넷이 생김 ( 이름 2nd 명칭이 부여됨 )
output 값을 출력 → 다음 스택에서 사용, 참조 가능
[ Metadatea Section의 ParameterGroups 활용 ]
스택 업데이트에서 리소스를 만들때 기본흐름 ( VPC → 서브넷 → 라우팅테이블, 게이트웨이 설정 )
- 각 파라미터를 용도에 따라 그룹화(Label로 식별) : Network Configuration, Computing Resource Configuration
- 파라미터의 순서지정가능( 나열순서 )
파라미터의 순서가 지정된 대로 변경되었다!
[AWS CLI] 버지니아 리전 Network baseline 생성
attach_iam_policy.sh
CloudFormation 자체를 콘솔이 아닌 코드로 실행하기 위해 VScode에 권한을 부여
- AWSCloudFormationFullAccess: AWS CloudFormation의 모든 작업을 수행할 수 있는 권한을 부여
- AmazonVPCFullAccess: VPC(Virtual Private Cloud)와 관련된 모든 작업을 수행할 수 있는 권한을 부여
diff -y ap-northeast-2/network_baseline.yaml us-east-1/network_baseline.yaml
: 서울리전, 버지니아 리전 Yaml 파일 비교
- | 두 파일에 동일한 행이 존재하지만 내용에 차이가 있는 경우
- < 좌측 파일에는 존재하지만 우측 파일에는 해당 행이 없는 경우
- > 우측 파일에는 존재하지만 좌측 파일에는 해당 행이 없는 경우
network_baseline.yaml의 내용(VPC, 서브넷, 인스턴스 구축 → EC2InstanceNameNetwork 테스트용 )을 기반으로 cloudformation 스택을 구축
aws cloudformation create-stack : stack_name지정, template-body로 템플릿 파일 지정, region 지정, parameters 지정
[AWS CLI] 프랑크푸르트 리전 Network baseline 동일하게 생성
CloudWatch
AWS Resource나Application의 모니터링 서비스( 운영데이터의 수집, 분석, 시각화, 관리 )
Collect(수집) : Metric(리소스의 상태값), Log
Monitoring : 시각화, 통합하여 확인
Act(운영관리) : CloudWatch Alarm, EventBridge 등의 반복작업이나 적절한 대응작업 수행
Analyze(분석) : CloudWatch Insights를 이용하여 원하는 분야, 데이터만 분석가능
Alarms는 Metrics를 기준으로 설정된다!
[ CloudWatch Metrics ]
AWS 리소스와 관련해서 언제, 어떤 항목의 값이 무엇이었는지 기록한 데이터
모든 리소스에 대한 지표( metric )를 cloudwatch에서 기본으로 제공 : CPU utilization, Network utilization, disk performance 등
- namespace : metric을 서비스별(리소스별) 그룹화하여 수집 ( AWS/EC2, AWS/RDS, AWS/Lambda … )
- Custom Metric 구성 : 구성한(조합한) metric에서 수집
- Dimension : Metric을 세분화하여 분류하기 쉽게함 ( 최대 10개 )
- Metric Name : 모니터링 하려는 Metric의 이름 → 네임스페이스 내에서 고유함, 서비스별로 사전정의됨 ( CPUUtilization, DiskReadOps, NumberObjects… )
- Period : Metric 수집하는 시간간격( 기본 1분 )
선택값에 따라 볼 수 있는 데이터의 범위가 달라진다 → 시간이 길수록 범위가 넓어짐 = 완만한 형태를 띔
[ CloudWatch Logs ]
AWS 리소스및시스템, 애플리케이션의로그 데이터를수집, 모니터링, 저장, 분석하는관리형서비스 ( 모든 리소스에서 수집가능 )
CloudWatch Logs 는Standard, Infrequent Access 두 개의Class지원 → Standard Access를 주로 사용
- Log Event : 모든 활동에 대한 기록 ( timestamp + 메시지 ) → 로그 데이터의 기본단위
- Log Stream : 시간순으로 묶음 ( Lambda의 경우 시간이 아닌 프로세스 별로 분리 ) → 시퀀스 표시
- Log Group : Stream에서 한번더 그룹화한 논리적인 단위( 그룹묶는 갯수제약없음 )
- Retention Preiod : 보관기간 설정
- Subscription Filter : 실시간으로 다른 서비스에 전송 → 분석, 시각화
[ CloudWatch Alarm ]
Metric 데이터를 기반 특정 조건이 충족될때(임계값설정) 설정한 작업이 진행되도록 트리거하는 기능 ⇒ 특정 작업의 자동화 가능
period을 3으로 설정 → 무조건 임계값(threshold) 넘어갔다고 알람실행X, 얼마기간동안(3time periods) 넘어간 상태이냐를 지정가능
알람의 발생으로 자동화된 작업을 수행
알람발생시 → SNS수행하여 메일 보내기, 큐에 작업목록화하여 수행, 이벤트 브리지로 다른 리소스와 연결
CloudWatch 실습
생략
'CLOUDWAVE' 카테고리의 다른 글
IaC : Ansible 소개 및 설치 (1) | 2025.01.31 |
---|---|
Public Cloud(AWS) : Network Connectivity service - VPC Peering, VPC Endpoint, Route53 (2) | 2025.01.30 |
Public Cloud(AWS) : Database Service - RDS (0) | 2025.01.24 |
Public Cloud(AWS) : Storage Service - EBS, S3 (0) | 2025.01.22 |
Public Cloud(AWS) : Computing service - ELB, Auto Scaling (0) | 2025.01.21 |