[따라하며 배우는 AWS 네트워크 입문] 01. AWS 인프라
클라우드
인터넷을 통해 언제 어디서든지 원하는 때 원하는 만큼의 IT 리소스(컴퓨팅, 스토리지, 네트워크)를 손쉽게 사용할 수 있게 하는 서비스
종류
- IaaS | EC2(컴퓨팅), VPC(네트워크), EBS(스토리지)
- PaaS | AWS Elastic Beanstalk (애플리케이션 배포)
- Serverless 플랫폼 | Lambda(컴퓨팅), API Gateway(API 프록시)
- SaaS
구현 모델
- 퍼블릭 클라우드
- 운영,관리 : 클라우드 서비스 제공 업체
- 사용 : 해당 클라우드의 리소스 사용
- 프라이빗 클라우드 (온프레미스)
- 사용자가 자신의 온프레미스(기업 데이터센터) 내에 클라우드 플랫폼을 구축해 직접 사용
- 하이브리드 클라우드
- 퍼블릭 클라우드, 온프레미스 모두에 서비스
AWS 클라우드
- 가용 영역(AZ, Availability Zone)
: 한 개 이상의 데이터 센터들의 모음 (초고속 광통신 전용망으로 연결) - 리전 (Region)
: 해당 지리적인 영역 내에서 격리되고 물리적으로 분리된 여러 개의 가용 영역의 모음
(최소2개~최대6개) - 엣지(Edge POP, Point of Presence)
: 외부 인터넷과 AWS 글로벌 네트워크망과 연결하는 별도의 센터 (Edge Location, Regional Edge Cache)
AWS 제품
컴퓨팅 서비스
- EC2 (Elastic Compute Cloud)
- 컴퓨팅 리소스를 가상 머신으로 제공
- 인스턴스라 부름
- 사용 목적에 따라 인스턴스 타입과 스펙(CPU, 메모리, 디스크 등)으로 구분
- 사용한 만큼 비용 지불
- 오토 스케일링 (Auto Scaing)
- EC2 인스턴스 조건에 따라 자동으로 서버 추가/제거
- 람다 (AWS Lambda) - 서버리스 컴퓨팅
- 프로그램 실행 컴퓨팅 엔진
- 코드만으로 서비스 실행 가능
네트워킹 서비스
- AWS VPC (Virtual Private Cloud) - 리소스 격리
- AWS 클라우드 내 논리적으로 독립된 섹션 제공
- 독립된 가상의 클라우드 네트워크
- AWS VPN (Virtual Private Network) - 가상 사설망
- 공용 인터넷을 통해 가상의 사설 네트워크를 구성하여 프라이빗 통신 제공
- 데이터 암호화, 전용 연결 등 여러 보안 요구사항 충족 가능
- Site-to-Site VPN, 클라이언트 VPN
- ELB (Elastic Load Balancing) - 로드 밸런서
- AWS에서 제공하는 로드 밸런싱(부하 분산) 기술
- 서비스 대상 시스템에 데이터 분산 전달
- AWS Private Link - 프라이빗 연결
- 퍼블릭 인터넷에 데이터가 노출되지 않도록 하고 내부 네트워크를 통해 AWS 서비스와 온프레미스 간에 안전한 비공개 연결 제공
- Route 53 - 도메인 네임 시스템
- AWS에서 제공하는 관리형 DNS 서비스
- 도메인 이름 구매를 대행
- 구매한 도메인 주소에 대한 호스팅 영역 설정을 통해 도메인 질의에 대한 응답 처리
- Route 53 Resolver : 하이브리드 클라우드 환경에서 온프레미스와 AWS 간 도메인 질의가 가능하게 함
- AWS 전송 케이트웨이 - 네트워크 확장
- VPC나 온프레미스 등의 네트워크를 단일 지점으로 연결할 수 있는 라우팅 서비스
- AWS Direct Connect - AWS 전용 연결
- 데이터 센터, 본사 사무실 또는 코로케이션(Co-Location) 환경과 같은 장소에서 AWS와의 전용 네트워크 연결을 제공하는 전용선 서비스
- AWS CloudFront - CDN (콘텐츠 전송/캐시)
- AWS 글로벌 네트워크를 통하여 콘텐츠를 캐싱하여 서비스 제공
- AWS Global Accelerator - 글로벌 전송
- 로컬 또는 글로벌 네트워크 통해 사용자에서 애플리케이션으로 이어진 경로를 최적화해 트래픽의 성능 개선
- 네트워크 보안
- 보안 그룹, 네트워크 ACL, 웹 방화벽
스토리지 서비스
- EBS (Elastic Block Store)
- 가용 영역 내의 EC2 인스턴스에 연결되어 사용될 수 있는 블록 스토리지 (Block Storage)
- S3 (Simple Storage Service)
- 객체 기반 무제한 파일 저장 가능 스토리지
- 사용자는 URL통해 파일 사용
- 여러 가용 영역에 걸쳐 99.999999999%의 뛰어난 내구성 제공
데이터베이스 서비스
- Amazon RDS (Relational Database Sevice)
- 관계형 데이터베이스
- Amazon DynamoDB
- 키-값 및 NoSQL 데이터베이스 서비스
- 서버리스 서비스 (사용자의 서버 전반 운영 관리 필요X)
그 외 서비스
- AWS CloudFormation
- 프로그래밍 언어나 텍스트 파일을 사용해 AWS 리소스 자동 배포
- AWS CloudWatch
- AWS 리소스 및 온프레미스의 자원 모니터링 서비스
- 데이터를 수집해 로그 저장 가능
- 특정 조건에 만족 시 알람 제공 가능
SSH 키 페어
SSH
- 네트워크를 통해 원격 시스템(서버, 장비 등)에 접근할 수 있는 프로토콜 및 프로그램
- SSH 서버, SSH 클라이언트(사용자)로 구성
- SSH 클라이언트가 SSH 서버에 접속하기 위해서는 인증 절차 필요
- 유저-암호 : 무차별 대입 공격 방식에 의해 권한 탈취를 할 수 있는 우려 존재
- 키 페어 파일 : 사용자의 개인키가 노출X, 키파일로 로그인 가능(편리)
AWS 키 생성 방식 (서울 리전)
- 유저-암호 : 무차별 대입 공격 방식에 의해 권한 탈취를 할 수 있는 우려 존재
- 키 페어 파일 : 사용자의 개인키가 노출X, 키파일로 로그인 가능(편리)
1) AWS 관리 콘솔(서울 리전) - EC2 서비스
2) 좌측 메뉴 : 네트워크 및 보안 - 키 페어
3) 키 페어 생성 클릭 및 설정
- 이름
- 파일 형식
- 윈도우 OS로 Putty 프로그램 사용 : ppk
- 맥 OS나 리눅스 내장 SSH 사용 : pem
4) 생성된 개인키 파일을 로컬 컴퓨터에 잘 보관할 것
키 분실할 경우
- System Manager Session Manager를 이용해 접근 후 관리자 권한 상승으로 임시 조치 가능
- http://bit.ly/cnba0101
[실습1] EC2 배포 및 사용
구성도
AWS 관리 콘솔 : EC2 인스턴스 배포
1) AMI 선택 ➡ Amazon Linux 2 AMI
2) 인스턴스 유형 ➡ t2.micro
3) 인스턴스 세부 정보 ➡ 네트워크/서브넷: 기본값, 퍼블릭 IP 자동 할당: 활성화, 나머지는 기본값
4) 스토리지 추가 ➡ 기본 값
5) 태그 추가 ➡ [태그 추가], 키: Name, 값: WebServer
6) 보안 그룹 ➡ SSH(내 IP), 규칙 추가, HTTP(위치 무관)
7) 키 페어 선택 ➡ 3.5항에서 생성한 키 페어 생성
사용자 PC에서 SSH로 EC2 인스턴스 접근
8) 인스턴스에서 퍼블릭 IP 확인 ➡ 메모해둘 것
9) 윈도우 OS ➡ PuTTY 다운로드
10) PuTTY SSH 설정 (키 페어 파일 지정) ➡ PuTTY
- Connection
- SSH
- Auth
11) 퍼블릭 IP로 SSH 접속 시도 ➡ PuTTY
- Session
- Host name에 퍼블릭 IP
입력 - Open
12) SSH 터미널 생성 & SSH 암호 통신을 위한 SSH 서버(EC2 인스턴스)의 키 다운
13) EC2 인스턴스 로그인 (ec2-user 입력)
EC2 인스턴스에 웹 서비스 설치 & 웹 접속 확인
14) EC2 인스턴스 SSH 터미널에서 웹 설정
- root 계정으로 전환 :
sudo su -
- Web 서비스 설치 :
yum install httpd -y
- Web 서비스 실행 :
systemctl start httpd
- 웹 페이지 구성 :
echo "<h1>Test Web Server</h1>" > /var/www/html/index.html
- curl 명령어로 웹 접속 확인 :
curl localhost
15) 사용자 PC의 웹브라우저에서 http://퍼블릭IP
로 접근
EC2 인스턴스 삭제
16) 서비스 ➡ EC2 ➡ 인스턴스 ➡ 인스턴스 선택 ➡ 작업 ➡ 인스턴스 상태 ➡ 종료
[실습2] CloudFormation 스택 생성 및 삭제
구성도
CloudFormation
- AWS 인프라에 대해 코드로 개략적인 선언을 하는 방법
- 자신이 생성할 AWS 인프라 자원을 코드로 정의하여 자동으로 정의된 자원을 생성하거나 삭제할 수 있다.
- IaC(Infrastructure as Code)
- 템플릿 : 생성할 AWS 인프라 자원을 코드로 정의한 파일 (JSON, YAML 형식)
- 스택 생성 : 템플릿을 업로드해 순서대로 스택을 자동 생성한다.
- 스택 삭제 : 생성에 의해 생성된 AWS 인프라 자원을 순서대로 자동 삭제
CloudFormation 템플릿
YAML 형식의 코드를 통해 다음을 정의해 배포할 수 있다.
- EC2 인스턴스에 대한 OS, 인스턴스 타입, 키 페어, 태그, 보안 그룹
- EC2 인스턴스가 부팅 시 자동으로 실행되는 명령어
Parameters:
KeyName:
Description: Name of an existing EC2 KeyPair to enable SSH access to the instances. Linked to AWS Parameter
Type: AWS::EC2::KeyPair::KeyName
ConstraintDescription: must be the name of an existing EC2 KeyPair.
LatestAmiId:
Description: (DO NOT CHANGE)
Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>'
Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2'
AllowedValues:
- /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2
Resources:
MyInstance:
Type: AWS::EC2::Instance
Properties:
ImageId: !Ref LatestAmiId
InstanceType: t2.micro
KeyName: !Ref KeyName
Tags:
- Key: Name
Value: WebServer
SecurityGroups:
- !Ref MySG
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
yum install httpd -y
systemctl start httpd && systemctl enable httpd
echo "<h1>Test Web Server</h1>" > /var/www/html/index.html
MySG:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Enable HTTP access via port 80 and SSH access via port 22
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 0.0.0.0/0
CloudFormation 스택 생성
1) 서비스 - CloudFormation - 스택 생성
2) 템플릿 지정 | 준비된 템플릿 - 템플릿 파일 업로드
3) 스택 세부 정보 지정 | 임의의 스택 이름 지정
4) KeyName | 이전 생성한 자신의 키 페어 선택
5) 옵션, 검토 부분 단계 생략
6) 스택 생성
7) 생성된 자원 확인 | 서비스 - EC2 - 인스턴스 - 인스턴스
8) 생성된 EC2 인스턴스 SSH 접속
9) 생성된 EC2 인스턴스 웹 서비스 접속
CloudFormation 스택 삭제
10) 스택 삭제 | 서비스 - CloudFormation - 스택 - 생성한 스택 선택 - 삭제 - 스택 삭제
11) 삭제된 자원 확인 | EC2 - 인스턴스 - 인스턴스
Author And Source
이 문제에 관하여([따라하며 배우는 AWS 네트워크 입문] 01. AWS 인프라), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ssu_hyun/따라하며-배우는-AWS-네트워크-입문-01.-AWS-인프라저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)