IT/Network & OS

[AWS] EC2

루벤초이 2022. 2. 5. 14:07

EC2는 Amazon Elastic Compute Cloud의 약자로서 말 그대로 클라우드 PC 개념입니다.

아래 공식 튜토리얼을 따라 설치하면 되는데요, 가입 후 AWS Free Tier, 즉 무료로 사용해 볼 수 있습니다.

단, Free Tier인 경우에도 사용량을 초과하거나 과금이 되는 경우들이 있으므로 Billing에 알람을 걸어두거나 수시로 확인해보세요.

무엇보다 과금이 되는 경우를 숙지하고 대비해두면 되겠죠.

 

자습서: Amazon EC2 Linux 인스턴스 시작하기 - Amazon Elastic Compute Cloud

인스턴스를 종료하면 인스턴스가 실제로 삭제되므로 인스턴스를 종료한 후에는 인스턴스에 다시 연결할 수 없습니다.

docs.aws.amazon.com

EC2 설치는 튜토리얼만한 것이 없는데, AWS 서비스 자체가 워낙 방대하다 보니, 한번에 다 이해하려고 하지 말고 차근차근 따라해 보고 시행착오를 겪다 보면 친숙해질 거에요.

본 튜토리얼에서는 EC2에 Ubuntu를 설치했다고 전제합니다.

 

Prerequisites

튜토리얼을 보면 Overview 이후 Prerequisites부터 생소한 개념이 나오는데요, 자세히 읽어보는 것이 좋지만 간단히 요약하자면,

  1. AWS 가입
    • Free Tier로 가입하라는 얘기죠.
  2. 키 페어 생성
    • 클라우드 PC를 만들고 사용하려면 먼저 클라우드 PC에 로그인해야겠죠? 이때 로그인 과정에 ID와 암호를 넣는 대신, (Public Key와 Private Key로 구성된) Key Pair 방식으로 로그인하도록 하는 건데요, Private Key 파일(.pem)을 로컬 PC에 보관해두고 접속하는 방식이에요. 가령 Private Key 파일 이름이 mykey.pem이라면,
      • ssh -i mykey.pem ubuntu@3.3x.xxx.xx  
      • scp -i mykey.pem -r ./myfolder ubuntu@3.3x.xxx.xx:/home/ubuntu/
    • 이런 식으로 접속(ssh)하거나 파일 송수신(scp)할 수 있게 됩니다. 
    • 이때, 자주 발생하는 오류는 권한 오류인데요, .pem 파일이 사용자만 읽을 수 있어야 하므로 권한을 설정해야 해요.
      • chmod 400 mykey.pem
  3. 보안 그룹 생성
    • 보안 그룹은 쉽게 말해서 접속 가능한 영역을 관리하겠다는 것으로, 가령 어떤 IP 대역, 어떤 포트만 허용하겠다는 규칙들이에요. 자주 실수하는 영역이므로, 앱 개발 중 뭔가 연결에 문제가 있는 것 같다 싶으면 일단 EC2 - Security Group으로 가서 inbound가 열려있는지 확인부터 해 봐야 합니다.
    • Inbound 뿐만 아니라 outbound 규칙도 있는데, 보통 outbound는 모든 트래픽을 허용하는 게 일반적이겠죠.

 

주의사항

콘솔에 접속해서 우측 상단의 Region을 선택해야 하는데요, 이때 리전이 바뀌면 서비스들이 안보일 수 있습니다.

region 설정

아무래도 프리 티어를 쓰다 보면, CPU 과부하가 걸리거나 먹통이 되어 ssh 접속조차 안될 때가 있는데요, 이때는 EC2 instance 선택 후 Instance state 메뉴에서 Reboot 해줍니다. 5분쯤 충분히 기다린 후 ssh로 접속하면 됩니다.

reboot instance

 

Elastic IP

외부에서 EC2에서 돌고 있는 앱에 접속하려면, PC의 Public IP가 필요합니다.

EC2 instance에 public IP가 있지만, 재부팅하면 바뀌기 때문에 고정 IP 기능이 필요하다면 Elastic IP를 연동해야 합니다.

아래 튜토리얼을 따라 설정하고 반드시 EC2에 연동해야 하는데, EC2에 연동하지 않으면 신청하고 안 썼다고 과금 됩니다. 반찬 가져다가 남기면 벌금 내는 것처럼 말이죠.

 

 

탄력적인 IP 주소 - Amazon Elastic Compute Cloud

탄력적인 IP 주소 탄력적 IP 주소는 동적 클라우드 컴퓨팅을 위해 고안된 정적 IPv4 주소입니다. 탄력적 IP 주소는 AWS 계정에 할당되며 릴리스할 때까지 할당된 상태로 유지됩니다. 탄력적 IP 주소

docs.aws.amazon.com

 

TMUX

EC2에서 앱을 돌려놓고 로그아웃하면 앱도 죽어버려요. 이럴 때 tmux를 사용하면 로그아웃해도 계속 돌릴 수 있습니다. 방법은 tmux 설치 후,

  • tmux new -t my_work
    • 새 창이 생기면 원하는 작업을 수행한 상태에서 Ctrl + B + D 로 빠져나옵니다.
    • tmux ls 해 보면 my_work가 보여요.
    • tmux attach -t my_work 하면 재접속됩니다. 빠져나올 땐 Ctrl + B + D로 나와야 죽지 않습니다.

 

연습문제 1. MQTT 통신하기

Elastic IP까지 받았다면, 이제 EC2에 접속해서 MQTT broker를 실행해 두고 해당 Elastic IP로 로컬 PC와 EC2간 MQTT 통신을 검증합니다.

  1. Security Group Inbound에 MQTT용 포트가 열려있는지 잘 확인하세요.
  2. EC2에 접속해서 node, npm, aedes(MQTT) 등을 설치하는 것은 일반 우분투와 동일합니다.
  3. MQTT 관련해서는 아래 튜토리얼을 참고하세요.
 

네트워크 - 1. MQTT

MQTT 통신 시리즈입니다. 네트워크 - 1. MQTT 네트워크 - 2. MQTT Client ★Sample Code 웹앱에서 다른 앱이나 서버 등과 통신할 수 있는 다양한 프로토콜 서비스가 있지만, Restful, 웹소켓, MQTT이 자주 사용됩

rubenchoi.tistory.com

 

GitHub - rubenchoi/react-lib-mqtt: React library for MQTT client

React library for MQTT client. Contribute to rubenchoi/react-lib-mqtt development by creating an account on GitHub.

github.com

 

연습문제 2. React 웹앱 호스팅하기

간단한 React 앱을 만들고 npm run build하면 build/ 폴더에 static 파일들이 생기는데요, 이 build/ 폴더를 scp로 EC2에 올려보고 EC2에 접속해서 해당 폴더에 가서 $ live-server ./build --port=8000 으로 돌린 후 모바일 폰 브라우저에서 http://<ElasticIP>:8000 포트로 열어봅니다. 잘 안 된다면 무엇이 문제인지 해결해 보세요. 

728x90
반응형

'IT > Network & OS' 카테고리의 다른 글

[AWS] Amplify  (0) 2022.02.09
[AWS] RDS MySQL Prisma  (0) 2022.02.06
ROS - 3. React 웹앱  (0) 2021.05.27
ROS - 2. ROS2 Web Server & 웹앱  (0) 2021.05.17
ROS - 1. ROS2 설치 및 CLOi 시뮬레이터  (0) 2021.05.17