AWS Billing Dashboard는 Root User만 접근이 가능하다.
IAM User가 Billing Dashboard에 접근하고 싶다면 Root User가 권한을 주어야 한다.
Budgets: 예산을 초과하는 경우 알림을 보내주는 설정
Budgets 설정
- [Create a budget]
- Budget setup: Use a template(simplified) 선택
- Templates - new: Monthly cost budget
- Zero spend budget: 프리티어 한도 초과(0.01 달러 이상 지출 발생 시 알림)
- Monthly cost budget: 월 예산 금액 초과 또는 초과가 예상되는 경우(예산의 85%, 100%, 100%가 예상되는 경우 알림)
- Budget name 설정
- Enter your budgeted amount 설정(달러 기준) - Monthly cost budget에 해당
- Email recipients: 알림을 받을 이메일
- [Create budget]
EC2 서버 생성
- [Launch Instance]
- Name and tags에서 Name 설정
- Application and OS Images(Amazon Machine Image): Ubuntu, Ubuntu Server 24.04 LTS (HVM), SSD Volume Type (Free tier eligible)
- Instance type: t2.micro (Free tier eligible)
- Key pair (login): Create new key pair를 선택해 생성 - 인스턴스에 접속 시 필요
- Key pair name 설정
- Key pair type: RSA
- Private key file format: .pem
- [Create key pair]
- [Launch Instance]
생성된 인스턴스의 상세에서 확인할 수 있는 부분
- Public IPv4 address: 외부에서 인스턴스에 접근하기 위한 IP
- Private IPv4 address: 내부에서 인스턴스에 접근하기 위한 IP
- Public IPv4 DSN: AWS에서 기본으로 제공하는 도메인명
💡Public IPv4 address로 접속했을 때 무한로딩이 걸리는 이유는 방화벽을 열어주지 않았기 때문이다.
EC2 서버 방화벽 설정
기본적으로 Inbound rules는 모두 닫혀있고 Outbound rules은 모두 열려있다.
22번 포트가 열려있는 이유는 keypair를 이용해서 컴퓨터(터미널)에서 AWS에 접근하기 위함이다.
- 생성된 인스턴스 상세의 [Security] 탭에서 Security groups 아래 링크 클릭
- [Edit inbound rules]
- [Add rule]
- Type: HTTP, HTTP
- Source: Anywhere- IPv4 - 0.0.0.0/0(모든 IP 주소)로 설정
- [Save rules]
외부에서 오는 요청을 처리하기 위한 설정
- 생성된 인스턴스 상세에서 우측 상단의 [Connect]
- EC2 Instance Connect의 Connection Type: Connect using EC2 Instance Connect
- [Connect]
- 이동된 콘솔 창 페이지에서 다음 명령어들을 실행
- 패키지 업데이트 명령어: sudo apt-get update
- nginx 설치를 위한 명령어: sudo apt-get install nginx
- nginx 실행을 위한 명령어: sudo systemctl start nginx(명령어 입력 후 별도 메시지 출력 X)
- nginx 실행여부 확인을 위한 명령어: sudo systemctl status nginx
- Active: active (running) - 실행 중
- Public IPv4 address로 접속
- Welcome to nginx! 확인
- Welcome to nginx!가 보이지 않는 경우 캐시 비우기 또는 브라우저 창을 새로 열면 확인 가능
Welcome to nginx!를 출력하는 html 파일 수정
- html 파일이 있는 경로로 이동 명령어: cd /var/www/html(index.nginx-debian.html이 해당 파일)
- 수정 명령어: sudo vim index.nginx-debian.html
- 커서가 있는 위치에서 i를 누르면 입력 가능(입력이 끝난 후 ESC)
- 저장하고 닫기: :wq
nginx 재시작하기
- nginx 재시작 명령어: sudo systemctl restart ngix
- Warning: The unit file, source configuration file or drop-ins of nginx.service changed on disk. Run 'systemctl daemon-reload' to reload units. 메시지가 뜨는 경우
- sudo systemctl daemon-reload 명령어를 사용해 reload
실행중인 인스턴스 종료
- 종료할 인스턴스를 선택
- [Instance state]
- [Stop instance]
💡인스턴스를 종료 후 재시작하면 Public IPv4 address가 변경된다.
IP를 고정으로 사용하기 위해서는 Elastic IP 설정을 해줘야 한다.
Elastic IP 설정
- [Elastic IPs]
- [Allocate Elastic IP address]
- Network Border Group 설정
- Public IPv4 address pool: Amazon's pool of IPv4 addresses
- [Allocate]
- 발급된 고정 IP를 선택
- 우측 상단의 [Actions]
- [Associate Elastic IP address]
- Instance: 고정 IP를 사용할 인스턴스 선택
- [Associate]
Elastic IP 설정 해제
- 설정을 해제할 Elastic IP 선택
- [Actions]
- [Disassociate Elastic IP address]
- [Disassociate]
- [Actions]
- [Release Elastic IP address]
- [Release]
EC2 서버 삭제
- 삭제할 서버 선택
- [Instance state]
- [Stop instance]
- [Stop]
- Instance state: Stopped 변경 확인
- [Instance state]
- [Terminate instance]
- [Terminate]
- Instance state: Shutting-down 변경 확인
- Instance state: Terminated 변경 확인
EC2 인스턴스의 타입
t2.micro
- t: 클래스 이름(어떤 클래스의 인스턴스 인지)
- 2: 세대를 의미(2는 2세대)
- micro: 클래스 내에서의 사이즈, 클수록 CPU, 메모리를 더 많이 쓸 수 있음
보안 규칙을 위한 Security Group과 Ports
- 여러 인스턴스에 할당 가능
- time out → 보안규칙 이슈
- 높은 확률로 inbound에서 firewall이 열려있지 않음
- connection refuse → EC2 내부 이슈
- EC2에서 nginx나 application을 잘 안켰을 경우
- EC2 내부에서 해결해야 하는 이슈
- 모든 inbound는 디폴트로 막혀있음
- 모든 outbound는 디폴트로 열려있음
포트(port)
- 22: SSH(Secure Shell)로 인스턴스에 원격 접속
- 21: FTP 파일전송 프로토콜
- 80: HTTP 웹 접속
- 443: HTTPS 안전한 HTTP 접속, 현재의 스탠다드
EC2에 접속하는 두가지 방법 SSH와 EC2 Instance Connect
Local에서 접속(SSH)
💡Windows에서는 WSL 추천
- AWS 폴더 생성
- keypair(.pem) 파일을 AWS 폴더로 이동
- 터미널 열기
- AWS 폴더로 이동(cd)
- chmod 400 <keypair 파일명.pem>
- chmod: change mode
- 400: 권한 설정(첫 번째 숫자: Owner용, 두 번쨰 숫자: Group용, 세 번째 숫자: 다른 유저들용)
- 4: 읽기 권한, 2: 쓰기 권한, 1: 실행 권한
- ssh -i <keypair 파일명.pem> ubuntu@<Public IP>
- y 입력
EC2 Instance Connect는 EC2 외부 요청 처리 시 사용했던 방법
EC2 인스턴스를 백업하기 위한 Elastic Block Store(EBS)
- EBS: EC2에 꽂아서 EC2 내용들은 다 백업할 수 있는 외장 메모리(USB 메모리 정도로 생각)
- 인스턴스를 Terminate하면 인스턴스가 사라지는데 EBS로 백업을 했다면 인스턴스를 Terminate한 후에도 데이터를 EBS에 유지할 수 있다.
- EBS는 하나의 인스턴스에 장착할 수 있고 하나의 인스턴스에는 여러 개의 EBS를 장착할 수 있다.
- EBS의 경우 하나의 Availabliity Zone(하나의 Region이 아닌)에서만 뺏다 꽂았다 할 수 있다.
- 여러 개의 EBS를 보관(시기별 백업)할 때는 EBS Snapshot을 사용한다.
- 복원을 하는데 더 시간이 오래걸리지만 보관료가 저렴해진다.
- EBS 여러 개 가지고 있는 것보다 저렴
- EBS Snapshot은 EBS와 달리 다른 Region으로 보낼 수 있다.
생성된 인스턴스의 Storage 탭에서 Block devices에 생성되어 있는 Volume을 볼 수 있는데 이게 Elastic Block Store이다.
- 새로운 Volume 생성
- [Volumes]
- [Create volume]
- Volume type: General Purpose SSD (gp2)
- Size (GiB): 원하는 사이즈로 설정
- Availability Zone: 인스턴스와 동일하게 설정
- [Create volume]
- 생성된 Volume 선택
- [Actions]
- [Attach volume]
- Instance: 연결할 인스턴스 선택
- [Attach volume]
- 인스턴스 상세로 이동해 Storage 탭에서 인스턴스에 붙은 EBS를 확인
💡EBS의 옵션 중 Delete on termination는 인스턴스를 삭제할 때 같이 삭제할 것인지 여부
인스턴스를 생성할 때 Configure storage에서 [Advanced]를 누르고 Volume 토클을 열면 옵션을 선택할 수 있다.
EBS Snapshot 사용(시간별 백업을 만들기 위함)
- Snapshot을 생성한 EBS를 선택
- [Actions]
- [Create snapshot]
- Description 작성
- [Create snapshot]
- 생성된 Snapshot은 Elastic Block Store의 Snapshots에서 확인 가능
- 생성된 Snapshot 선택
- [Actions]
- [Create volume form snapshot] → snapshot을 다시 volume으로 만들 수 있음
- volume을 지워도 snapshot으로 다시 volume을 만들 수 있음
- [Copy snapshot] → 다른 Region으로 이동할 수 있음
EC2 인스턴스를 복사하기 위한 Amazon Machine Image(AMI)
Amazon Machine Image
- EC2 인스턴스를 생성할 때 사용되며 운영 체제와 애플리케이션, 라이브러리 등이 포함
- 이러한 이미지를 사용하면 개발자는 이미 구성된 환경을 더 쉽게 설정
- AMI는 Amazon에서 제공하는 것뿐만 아니라 개발자가 직접 생성
- EC2를 가져다 이미지화해 보관을 해서 직접 쓸 수 있음(AMI = 설치CD)
- 개발자는 자신이 구성한 인스턴스를 이미지로 만들어서 사용할 수 있으며, 이를 다른 사람과 공유
EBS와 AMI의 차이
EBS
- Amazon EBS는 EC2 인스턴스에서 사용되는 스토리지 볼륨
- 인스턴스에 연결되어 인스턴스에 데이터를 저장하고 보존하는 데 사용
- EBS 스냅샷은 EBS 볼륨의 이미지
AMI
- EC2 인스턴스를 시작할 때 사용되는 이미지
- 이미 설치된 운영 체제와 애플리케이션을 포함하여 인스턴스를 구성하는 데 필요한 모든 정보를 포함
- AMI를 사용하여 손쉽게 EC2 인스턴스를 시작하고, 중지하고, 삭제하고, 복제하고, 복원할 수 있음
- AMI는 EBS 스냅샷을 사용하여 생성될 수 있음
- AMI를 생성할 때 EBS 스냅샷을 사용하면 인스턴스를 시작할 때 EBS 볼륨이 생성
- 해당 볼륨에는 이전 인스턴스와 동일한 데이터가 저장
AMI 생성
- 이미지를 생성할 인스턴스를 우클릭
- [Image and templates]
- [Create image]
- Image name 설정 후 나머진 default
- [Create Image]
- 생성된 Image는 Images의 AMIs에서 확인 가능
- 생성된 Iamge 선택 후 [Launch instance form AMI]
- 인스턴스 Name 등 설정 후 [Launch instance]
'AWS' 카테고리의 다른 글
[AWS] Simple Storage Service (S3) (0) | 2024.06.25 |
---|---|
[AWS] Relational Database Service (RDS) (0) | 2024.06.25 |
[AWS] Elastic Load Balancer (ELB) (0) | 2024.06.25 |
[AWS] Identity and Access Management (0) | 2024.06.18 |