관리 메뉴

JIHYUN JEONG

[Spotify Data Analysis/스포티파이 데이터 분석] AWS EC2 cronjob(크론잡) 설정 (8) 본문

Data Science/Data Analysis

[Spotify Data Analysis/스포티파이 데이터 분석] AWS EC2 cronjob(크론잡) 설정 (8)

StopHyun 2020. 3. 21. 14:59

AWS EC2 를 활용해 cronjob(크론잡)을 설정 해 보겠습니다.

 

 

 

 

 

인스턴스 개수 1개, 나머지는 특별히 설정해줄게 없으므로 다음으로 넘어갑니다. 

키페어에서 우리가 썻었던 키페어를 선택하고 런치합니다.

 

인스턴스 시작을 누르면 인스턴스가 생성됩니다. 인스턴스가 running 될 떄 까지 몇초 걸립니다. running 상태로 되었으면 이제 퍼블릭 DNS 주소를 통해 바로 EC2 서버에 접속해보겠습니다. 

 

터미널로 가서 아래 명령어를 통해서 접속합니다. 명령어를 실행 시킬 때 pem 파일이 들어가 있는 폴더에서 실행시켜야 합니다. 

ssh -i pem파일 ec2-user@퍼블릭DNS

ssh -i spotify.pem ec2-user@ec2-1-21-17.ap-northeast-2.compute.amazonaws.com

 

경고창이 아래와 뜹니다. yes로 해줍니다.

 

ECDSA key fingerprint is SHA256:sdfjksdfjkdsjfskalsldklaskdf.
Are you sure you want to continue connecting (yes/no)? yes

 

정상적으로 접속하면 아래와 같이 EC2 라고 뜹니다. sudo yum date를 run 해달라고 하니 그대로 해줍니다.

 

자, 이제 cronjob을 실행시킬 파이썬 스크립트 코드를 해당 EC2 서버에 복사해보겠습니다.

 

EC2 서버가 아닌 새로 터미널 창을 하나 열어서 실행시킵니다. 실행시키는 경로에 pem파일, 파이썬 파일이 들어가 있어야 합니다.

 

scp -i pem파일 업로드할 파이썬 파일 ec2-user@퍼블릭DNS:~/ 

scp -i spotify.pem 10.spotify_s3.py ec2-user@ec2-1-2-3-4-7.ap-northeast-2.compute.amazonaws.com:~/

이런 결과가 뜨면 정상적으로 파일이 업로드 되었습니다. EC2 서버로 가서 확인해보겠습니다.

 

EC2 서버에 파일이 잘 올라간 것을 확인 할 수 있습니다.

 

 

자 그럼 파이썬 스크립트를 실행을 시켜봅시다. 근데 python3가 설치가 되어 있지 않습니다. 

 

sudo yum list | grep python3 명령어를 통해서 python3 어떤 버전이 설치 가능한지 확인합니다. 3.6 버전이 가능하군요.

 

sudo yum install python36 명령어를 입력해서 python3.6 버전을 설치합니다.

 

파이썬이 설치가 잘 되었습니다. 

 

이제 pip를 설치해보겠습니다. 아래 명령어를 실행시킵니다.

curl -O https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py

 

자, 이제 파이썬 프로그램을 실행시켜봅시다. 실행 시킬때 필요한 모듈들 설치가 필요할 겁니다.

 

아래 명령어를 통해 필요한 모듈들을 다 설치합니다. 

pip3 install 필요한 모듈 --user 

 

 

이제, crontab을 설치해보겠습니다.

 

sudo yum install crontab 

 

설치 후 crontab -e를 통해서 

 

[ec2-user@ip-172-31-39-111 ~]$ sudo yum install crontab
Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main                                            | 2.1 kB     00:00
amzn-updates                                         | 2.5 kB     00:00
No package crontab available.
Error: Nothing to do
[ec2-user@ip-172-31-39-111 ~]$ sudo service crond start
[ec2-user@ip-172-31-39-111 ~]$ crontab -l
no crontab for ec2-user
[ec2-user@ip-172-31-39-111 ~]$ crontab -e
no crontab for ec2-user - using an empty one
crontab: no changes made to crontab
[ec2-user@ip-172-31-39-111 ~]$ pwd
/home/ec2-user
[ec2-user@ip-172-31-39-111 ~]$ which python3
/usr/bin/python3
[ec2-user@ip-172-31-39-111 ~]$ crontab -e
no crontab for ec2-user - using an empty one
crontab: installing new crontab
[ec2-user@ip-172-31-39-111 ~]$ crontab -e
crontab: no changes made to crontab
[ec2-user@ip-172-31-39-111 ~]$ crontab -l
MAILTO=stophyuni@gmail.com

30 18  * * * /usr/bin/python3 /home/ec2-user/10.spotify_s3.py
[ec2-user@ip-172-31-39-111 ~]$ crontab -e
crontab: installing new crontab

 

crontab -e 를 입력합니다. 입력 후 i 를 누른면 입력이 가능합니다. 입력 할 정보를 저장할 때는 shift + : 누르고 wq(저장 후 종료) 입력 후 엔터. 참고로 q를 입력하면 그냥 종료입니다. MAILTO로 설정해 둘 경우 cronjob에 대한 결과를 해당 메일로 보내줍니다.

 

 

crontab 구문에 관해서는 아래 사이트에서 확인 바랍니다.

 

https://www.adminschoice.com/crontab-quick-reference

 

Crontab – Quick Reference

cron is a unix, solaris utility that allows tasks to be automatically run in the background at regular intervals by the cron daemon. Learn setting up cronjobs in Unix and Solaris in this document.

www.adminschoice.com

 

 

crontab -l 을 입력해서 crontab 작업이 잘 설정되어 있는지 확인합니다.

 

AWS EC2 를 활용해 cronjob(크론잡)을 설정 해보았습니다.

 

Comments