어제와 그저께는 안만졌고, 3일 전에 마지막으로 만졌던 부분이 AWS EC2 서버에서 파이썬 가상환경을 켜는 것 까지였다.
3일 전 기준으로 남아있던 것은
1) Git에 토큰 없이 push를 했는데, 이걸 EC2 서버에서 토큰을 반영하는 방법
2) EC2 서버에 토큰 반영 후 python3 slackbot.py 제대로 작동하는 지 확인
3) EC2 서버에서 crontab을 이용해서 '노트북이 켜져 있지 않더라도 EC2 서버에서 slackbot.py를 매일 특정 시간대에 반복적으로 실행'
이 세가지였는데, 오늘 한 30분 걸려서 전부 다 해결했다.
1) Git에 토큰 없이 push를 했는데, 이걸 EC2 서버에서 토큰을 반영하는 방법
이 부분을 어떻게 해야 될 지 고민을 많이 했는데, 팀원의 조언에 따라 '토큰 없이 repository에 push를 하고, EC2 서버에서 해당 repository를 clone해온 뒤 직접 EC2 서버에 있는 .py 파일을 수정해서 토큰을 집어넣는 방법' 을 선택했다.
머리로는 이해가 됐으나, 어떻게 가능하게 하지? 하고서 고민을 좀 했다. 신기하게도 VSode의 Extension 중에, AWS의 EC2 내부 파일 소스코드를 변경하는 Extension이 있었다!
1-1) VSCode의 Extensions 에서 ftp-simple 을 설치한다.
1-2) F1을 눌러 Command Pallette에 들어간 후, ftp-simple: Config - FTP connection setting을 클릭한다.
1-3) 해당 값으로 수정해준다.
[
{
"name": "localhost", // 본인이 쓰고싶은 이름 아무거나 넣기
"host": "3.35.218.130", // EC2에서 발급받은 "퍼블릭" IP 넣기
"port": 22, // 고정값
"type": "sftp", // 고정값
"username": "ec2-user", // 그냥 임의의 유저 이름 적기
"path": "/", // 걍 두면 됨
"autosave": true,
"confirm": true,
"privateKey": "/Users/sangminpark/.ssh/steadily.pem" // 미리 받아 둔 .pem 키 위치
}
]
1-4) 이후에 ftp-simple: Remote directory open to workspace를 클릭한 후, 임의로 만들었던 ftp 서버 이름 (본인의 경우 localhost)을 선택한다.
1-5) 그 후 slackbot.py가 있는 위치를 찾는다. (home/ec2-user/app/git/covid19-today-slackbot/slackbot.py)
1-6) 8행에서 token값을 기존에 갖고 있던 것으로 채워준다. -> 1번 끝
2) EC2 서버에 토큰 반영 후 python3 slackbot.py 제대로 작동하는 지 확인
- 1번 한 후 EC2 터미널 covid19-today-slackbot 위치에서 python3 slackbot.py를 실행하니까 나왔음 -> 2번 끝
3) EC2 서버에서 crontab을 이용해서 '노트북이 켜져 있지 않더라도 EC2 서버에서 slackbot.py를 매일 특정 시간대에 반복적으로 실행'하기
- 내 맥북에서 crontab을 실행하는 방법과 똑같이 "(가상환경 켜는 루트) && (파이썬 루트) (실행할 파이썬 파일 루트)" 였다. 내 맥북에서는 가상환경 켜는 루트와 파이썬 루트, 실행할 파이썬 파일 루트가 전부 좀 길어서 읽기가 복잡했는데, 오히려 EC2에는 깔려있는 것도 별로 없고 해서 편했다. ㅋㅋ
* * * * * source /tmp/eb_python_app/bin/activate && /bin/python3 /home/ec2-user/app/git/covid19-today-slackbot/slackbot.py
가상환경 켜는 루트는 tmp, 파이썬 루트는 bin을 통해, 실행할 파이썬 파일 루트는 home/ec2-user/app/git을 통해 각각 할 수 있었고, EC2 터미널에서 ls와 pwd를 이용해서 찾았다. * * * * *은 매 1분마다를 뜻한다. 이걸 6시 30분에 켰고, 6시 31분과 32분에 알림이 뜨면 이제 crontab 적용까지 완료인 것이었다.
이제, 맥북을 켜두지 않아도 EC2 서버에서 알아서 정오에 1) 가상환경을 켜고, 2) slackbot.py를 실행할 것이다. 이제 끝났다. ㅋㅋ
실질적으로 한 3~4일 걸린 것 같은데, 너무 재밌었다. 크롤링과 AWS EC2에 대해 단 하나도 몰랐는데, 이 작은 토이프로젝트를 통해 많은 걸 배웠다. 이제 시간 나면 기존에서 더 확장해서, 매 일요일 정오에는 '금주 최고 확진자 수는: ~명입니다.' 등등의 코로나 확진자수에 관한 더 많은 정보를 담아볼 생각이다. 프로젝트 끝 😀
'Slackbot' 카테고리의 다른 글
디버깅 #1 EC2 가상환경이 삭제된 문제 (0) | 2021.01.15 |
---|---|
오늘의 코로나 Slackbot 개선하기(예정) (0) | 2021.01.11 |
1/2 AWS EC2 인스턴스 만들고 GitHub에서 repository git clone하기 (0) | 2021.01.02 |
1/1 확진자 수 크롤링 후 Slackbot을 통해 채널에 전송하기 (0) | 2021.01.01 |
12/30 Slacker를 이용해서 bots-playground에 메시지 띄우기 (0) | 2020.12.30 |