EC2 메뉴 -> 인스턴스 -> 인스턴스 시작
- 이름 및 태그
- 어플리케이션 및 OS 이미지 - AMI (Amazon Machine Image) 선택
AMI : 즉시 사용가능한 OS와 관련 패키지 포함한 이미지 파일
OS type, version, 보조기억장치 type에 따라 적합한 AMI 선택- 인스턴스 유형
- EC2 instance가 동작할 HW 구성 : CPU 형식, 메모리 크기, 인스턴스 스토리지 유형/용량, 네트워크 속도
- AWS 제공 인스턴스 유형 종류 - 범용 (일반 성능)/컴퓨팅 최적화 (CPU 성능)/메모리 최적화/가속화된 최적화 (GPU 성능)/스토리지 최적화 (보조기억장치)
- 인스턴스 유형 결정 기준: 제공하려는 서비스 / 요금
- 키 페어 : ssh client 접속시 사용할 공개키 암호
- EC2 단위로 생성하거나 미리 생성된 키 페어를 EC2 instance 생성시 공유 가능
- 키 페어 생성 : 이름 / 유형 (RSA) / 프라이빗 키 형식 - OpenSSH 계열 (Linux, MacOS - .pem) , putty (Windows - .ppk)
- VS Code와 연동시 .pem 파일 필요
- 네트워크 설정 : EC2 instance가 동작할 네트워크 (VPC/subnet) 설정
VPC 결정
subnet 결정 (외부 네트워크 연결 유무에 따라 public/private subnet 선택)
퍼블릭 (공인) IP 자동 할당
- 인터넷을 통한 외부 네트워크 연결 -> 활성화 (퍼블릭&프라이빗 IP 할당)
- 내부 네트워크 간 통신만 수행 -> 비활성화 (프라이빗 IP만 할당)
- 보안 그룹 : EC2 instance에 대한 방화벽 역할, 여러개 선택 가능 (최대 5개)
stateful 방식 - 상태 저장 방식, 송신자의 IP주소와 포트번호 저장 -> outbound
(모든 패킷 거부로 설정해도 해당 IP주소와 포트에 대해서는 통신가능)
보안 그룹 규칙
- inbound : 외부에서 EC2 instance에 전송, 기본 규칙은 모든 패킷 차단
- outbound : EC2 instance에서 외부로 전송, 기본 규칙은 모든 패킷 허용
- 스토리지 구성 : EC2 instance가 사용하는 스토리지에 대한 용량 설정/추가
통상 OS를 사용하기 위해서는 root file system 구성 필요 -> 이를 위한 기본 스토리지 설정
instance storage volume : EC2 instance의 root file system을 구성하는 스토리지
인스턴스 스토리지 볼륨은 EC2 instnace 삭제될 때 동시에 삭제
인스턴스 스토리지 볼륨에 저장되는 데이터 양만큼 비용 과금
추가적인 스토리지 추가 가능- 고급 세부 정보
스팟 인스턴스 요청 : 스팟 인스턴스 요금제로 생성시 선택
종료 방지 : EC2 instance가 잘못 종료되는 것 방지 옵션
사용자 데이터: EC2 instance가 생성/시작할 때 자동 수행할 내용을 shell script 형식으로 작성
EC2 instance 구동준비 상태, 요금 미청구
EC2 instance 구동 상태, 요금 청구
EC2 instance 구동중지 상태, 요금 미청구, 스토리지 비용은 청구, 메뉴 - 인스턴스 정지
EC2 instance 종료준비 상태, 요금 미청구
EC2 instance 삭제, 요금 미청구, 메뉴 - 인스턴스 종료
(중지 vs 종료 헷갈리지 말 것!)
인터넷에서 사용가능한 IP
서브넷에 설정한 IP주소 CIDR 범위에서 할당된 로컬 IP, VPC 내에서 통신 가능
EC2 instance가 중지 상태인 경우 요금 계산에서 제외
EC2 instance가 중지 상태인 경우라도 사용요금 부과
패킷 전송(송신)에 대한 비용
Elastic IP, 고정 IP; 5개까지의 IP를 EIP로 할당 가능
그 외는 요금 청구 (참고)
EC2 메뉴 -> 탄력적 IP -> 탄력적 IP 주소 할당
- 네트워크 경계 그룹 - region
- 퍼블릭 IPv4 주소 풀 (pool) - Amazon의 IPv4 주소 풀
- 태그 설정
EC2 메뉴 -> 탄력적 IP -> 연결할 EIP 인스턴스 선택 -> 작업 메뉴 -> 탄력적 IP주소 연결
- 리소스 유형 : 인스턴스
인스턴스 : EIP를 연결할 인스턴스 선택
EIP에 연결된 인스턴스나 네트워크 인터페이스가 없는 경우에만 삭제 가능
EC2 메뉴 -> 탄력적 IP -> 연결할 EIP 인스턴스 선택 -> 작업 메뉴 -> 탄력적 IP 주소 연결 해제 후 다시 작업 메뉴 -> 탄력적 IP 주소 릴리즈를 선택하여 삭제
SSH client 프로그램을 사용하여 접속
RDP client 프로그램을 사용하여 접속
yum : Redhat 계열 Linux 배포판 패키지 매니저 프로그램
패캐지 이름: Debian - apache2 / Redhat - httpd
sudo yum -y install httpd
보안 그룹 이름
설명
VPC 선택
인바운드 규칙 추가
- 실행중인 EC2 instance에 보안 그룹 추가
EC2 메뉴 -> 인스턴스 -> EC2 instance 선택 -> 작업 메뉴 -> 보안 -> 보안 그룹 변경
- 연결된 보안 그룹 영역에서 보안그룹 선택에 연결할 보안 그룹 지정
- 보안 그룹 추가 버튼 활성화 -> 추가 선택
vi index.html -> web application
배포하기 위한 디렉토리에 application 복사
sudo index.html /var/www/html -> web application 배포
사용자 host에서 application 개발 후
FTP를 이용한 application 전송
Git을 이용한 git repository 공유
개발자 host에서 application 개발
완료된 application github repository에 push
EC2 instance에서 github repository에 내용 pull
- git package 설치 : sudo yum -y install git
- github repository clone : git clone <레포지토리 주소>
- 배포하기 위한 디렉토리에 application 복사
sudo cp * /var/www/html -> web application 배포
VS Code를 이용해서 EC2 instance 연결을 통해 직접 application 개발 - SSH 이용
사실 역대급 사고(?)가 터지긴 했다. 생성한 인스턴스가 아무리 무슨 수를 써서라도 putty로 접속이 안되는 것이다. 이것 때문에 시간은 시간대로 날려먹고 생성했다가 정지시킨 인스턴스 개수들은 헤아릴 수 없을 지경(?)이었다. 진도는 진도대로 뒤쳐지고 스트레스틑 스트레스대로 받고. 농담 아니고 정말 세상이 끝이 나는 기분이었다.
이렇게 망했나 싶었는데 그래도 천만다행히도 AWS 웹 콘솔에서 직접 해당 인스턴스로 접속하는 방법을 알아내어 무사히 들어가고 또 나머지 실습을 잘 마칠 수 있었다. 정말로 putty가 연결될 수 있다면 더할나위 없겠지만, 일단 학습이 급한대로 당분간은 putty에 연결된 셈 치고 직접 콘솔을 통해 접속을 이어나가야 할 것 같다.
이런저런 방법을 찾아도 안되고는 있지만 언젠간 끝내 접속될 수 있기를 바란다. 아니면 부디 그냥 내 컴퓨터만의 문제이기를.