새소식

데이터 엔지니어링

[AWS EC2] 가상 머신 인스턴스 생성 (외부 IP, 내부 IP 설정)

  • -

TODO LIST

  • EC2 가상 머신 생성
  • RDS와 보안 그룹 공유 설정
  • 크롤러 배포

1. EC2 가상 머신 생성

→ 내 컴퓨터 (가상머신) 이름 (별명)

 

내 컴퓨터에서 사용할 os (운영체제)

  • 다양한 os를 선택할 수 있지만, 가상 머신(서버)에서 주로 사용되는 운영체제는 ubuntu(리눅스)임
    • 오픈 소스 → 오류 및 예외 상황에 대한 커뮤니티 활성화 (높음)
    • 터미널 기반 조작에 매우 친화적 (CLI)
  • 이미지는 os의 버전을 선택할 수 있음 (가장 최신 버전보다는 바로 이전 버전을 선호 → 최신버전은 아직 버그에 대한 내용이 밝혀지지 않은 경우가 많음)
  • 아키텍처는 프로세서 종류 x86, ARM 프로세서 ⇒ 이건 자신의 개발 상황에 맞춰서 진행하는걸 추천 (프로세서 및 os 불일치로 인해 내 노트북에서는 돌아가던게 가상머신에서는 안돌아가는 불상사가 생길 수 있음)

 

내 노트북의 사양 (메모리, cpu 등)

  • 프리티어는 micro까지 사용 가능함 (우리가 구현한 크롤러를 돌리는데는 크게 지장없으니까 괜찮음)
  • 나중에 ai모델을 학습시키거나, 서비스 배포시에는 필요 컴퓨팅 소스 확인 등의 과정을 거쳐 선택

 

내 가상머신에 접속하기 위해 필요한 key

  • 맥에서는 pem
  • 윈도우에서는 ppk로 putty랑 주로 사용됨
  • rsa와 ED25519는 암호화 키의 알고리즘 차이
    • RSA가 오리지널 형식으로 대부분의 시스템과 호환됨 → RSA 추천

무조건 잃어버리지 않게 관리하는게 좋음!!!

 

퍼블릭 IP (외부 ip)의 경우, 외부와 통신할때 사용하는 ip로, 크롤러가 외부 웹사이트, 서버로 접속해야하는 경우 할당해줘야한다.

우리는 크롤러를 배포할 것이기 때문에 앵간하면 열어주는게 좋다!

(보안이 걱정된다면 외부 ip 없이 Nat gateway를 달아주는게 좋다만, 비용 측면에서 매우 비효율적...)

 

* 외부 IP, 내부 IP에 대해 조금 더 쉽게 부연설명하자면,

내부 IP : 회사 내선 전화 번호

외부 IP : 개인 휴대 전화 번호

라고 이해하면 쉽다.

 

회사동료 A가 같은 회사 동료 B에게 물건이 도착하면 자신에게 연락해달라는 요청을 한다고 가정하자,

이때 B는 물건이 도착하면 A에게 회사 내선 번호로 연락하면 된다.

 

하지만 A와 B가 다른 회사라면?

회사 내선 전화로 직접 연결할 수도 없고, 연락받을 수도 없다.

 

이때 방법은 총 세가지.

1. 개인 휴대전화번호로 연락한다

2. 우리 회사 대표 번호로 상대방 회사 대표 번호로 연락한다.

3. 우리 회사 대표 번호로 상대방 휴대전화번호로 연락한다.

 

여기서 우리가 컨트롤할 수 있는건 개인 휴대전화번호로 연락할지, 회사 대표 전화로 연락할지이고,

여기서 말하는 회사 대표 번호가 Nat gateway이다.

(우리 회사의 직원이 외부 회사로 연락하고, 응답받을 수 있도록 연결해주는 대표 전화 번호 같은 느낌)

 

그럼 이제 앞에서 Nat gateway를 달아주는게 비용 측면에서 비효율적이라고 했던 부분을 이해할 수 있다.

(모든 직원이 개인 전화번호로 연락하면 회사 대표 전화는 사용할 필요가 없음 -> 회사 대표 전화 비용 X)

(대신 직원의 정보가 외부로 유출될 수 있다는 위험이 존재할 뿐)

(근데 우리는 어차피 크롤러를 동작시키는것이 목적이기 때문에, 해킹당하면 없애면 그만이야~)

-> 외부 IP만 할당해주는게 비용 효율적

 

아무튼 본론으로 돌아와서, 위에서와 같은 맥락으로 외부 ip가 없으면 우리 서버에서 다른 웹사이트로 접속하지 못하고, 외부 ip를 할당하거나 Nat gateway를 연결하라고 하는 것이다!

 

 

방화벽 (보안 그룹)은 생성

  • ssh 포트를 열어놔야 앞에서 만든 키(ppk, pem)로 접속 가능함

소스 유형을 내 IP로 해놓으면 내 컴퓨터에서만 키로 접속가능하고, 사용자 지정은 지정한 ip에서만 접속이 가능함.

위치 무관의 경우 어떤 pc건 key만 있으면 접속 가능

  • 실제 서비스 배포의 경우 포트 번호를 통해 접속 트래픽을 관리하기 때문에 보안 그룹 설정이 매우 중요하지만, 우리는 크롤러로 외부와의 소통이 거의 없기 때문에 보안 그룹은 ssh하나만 열어놔도 충분함.

마지막으로 스토리지는 말그대로 컴퓨터 용량! 우리는 거의 필요 없음

  • 프리티어 최대 용량은 30gb까지 가능
  • 도커 이미지를 올리거나, 무거운 프로그램을 돌리는 거면 많은 용량이 필요하지만, 우리는 크롤링한 데이터를 로컬에 저장하는 것도 아니고, 크롤러 프로그램도 그렇게 무겁지 않기 때문에 8기가로도 충분할 듯
    • 이후에 늘리거나 줄이는 것도 가능함

건들거 없음 (skip)

마지막으로 자신이 만들 가상머신의 설정값들을 확인하고 인스턴스 시작을 누르면 가상 머신 생성 끝~!

 

 

이제 이 인스턴스에 접속하기 위해서는 두가지 방법이 있음

  • ec2 콘솔 (웹페이지)에서 바로 접속
  • 내 노트북 터미널 혹은 외부 프로그램을 활용하여 앞에서 발급받았던 키페어로 인증 후 접속

결과는 똑같으나, ec2 콘솔에서 접속하는 경우 터미널에 렉걸리는 경우가 간혹 생김

→ 노트북 터미널 혹은 termius라는 프로그램을 사용해서 접속하는걸 추천

 

https://termius.com/

 

Termius – Modern SSH Client for Desktop and Mobile devices

Connect with one click from any mobile and desktop device. No re-entering IP addresses, ports, and passwords.

termius.com

 

터미널로 하려면 밑의 코드 참조!

# 키페어에 권한 부여 ('읽기')
chmod 400 "gunu_key.pem"

# ssh 프로토콜에 key 정보 (인증 정보)를 포함해서 내 가상머신의 프라이빗 ip주소(ubuntu@13.124.88.249)에 접속 요청을 보냄
ssh -i "gunu_key.pem" ubuntu@13.124.88.249
Last login: Wed Jul 31 20:13:19 on ttys000
╭─gunu@baggeon-uui-MacBookPro ~/Desktop/EC2 접속키
╰─$ chmod 400 "gunu_key.pem"

╭─gunu@baggeon-uui-MacBookPro ~/Desktop/EC2 접속키
╰─$ ssh -i "gunu_key.pem" ubuntu@ec2-13-124-88-249.ap-northeast-2.compute.amazonaws.com
The authenticity of host 'ec2-13-124-88-249.ap-northeast-2.compute.amazonaws.com (13.124.88.249)' can't be established.
ED25519 key fingerprint is SHA256:RLp3yjjSaftD4O1P4sczvg8rJCeBrq1eOp5iolkDI8A.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? ㅛ yes
Warning: Permanently added 'ec2-13-124-88-249.ap-northeast-2.compute.amazonaws.com' (ED25519) to the list of known hosts.
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.5.0-1022-aws x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Jul 31 11:13:45 UTC 2024

  System load:  0.01              Processes:             98
  Usage of /:   21.1% of 7.57GB   Users logged in:       0
  Memory usage: 22%               IPv4 address for eth0: 172.31.3.97
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status


The list of available updates is more than a week old.
To check for new updates run: sudo apt update

Last login: Wed Jul 31 11:11:45 2024 from 13.209.1.59
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

ubuntu@ip-172-31-3-97:~$ ls

 

가상머신 접속까지 끝~!


이제 다음 포스팅에서 크롤러를 동작시켜보고, 크롤러 프로그램을 크론잡으로 설정하기만 하면

매일 자동으로 데이터가 수집되고,

데이터베이스에 적재되며,

나는 적재된 데이터베이스를 Tableau에 연결해서 분석하면 된다!

 

끝까지 화이팅~!

 

ㄱㅊㅁ_ㅇㅈ

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.