어제 밤에 집에서 팀원의 도움을 좀 받아서, crontab까지 완벽하게 작동 시켰다.
* * * * * source /Users/sangminpark/Desktop/covid19-today-slackbot/slackbot/bin/activate && /Users/sangminpark/Desktop/covid19-today-slackbot/slackbot/bin/python3 /Users/sangminpark/Desktop/covid19-today-slackbot/slackbot.py
* * * * *은, crontab에서 매 1분 마다를 뜻한다. 그 뒤에
source /Users/sangminpark/Desktop/covid19-today-slackbot/slackbot/bin/activate
는, 가상환경을 켜는 명령이고, && 을 통해 + .py를 실행하는 명령과 함께 묶었다.
&& /Users/sangminpark/Desktop/covid19-today-slackbot/slackbot/bin/python3 /Users/sangminpark/Desktop/covid19-today-slackbot/slackbot.py
python3이 있는 디렉토리까지 써주고, 다시 한 번 또 .py가 있는 디렉토리까지 써줘야 된다는 점은 몰랐는데, 팀원의 도움으로 알게 되었다. 아무튼, 저렇게 두 번 다 최상위 /Users 부터 쭉쭉 내려가야 된다는 점을 알게 되었다.
결과적으로 저 명령은, <매 분마다 가상환경을 켜고 파이썬 파일을 실행해서 슬랙봇이 작동되게 하는> crontab 명령어이다. 이게 성공하여 슬랙 채널에 매 분마다 코로나 확진자수가 나오게 되었고, 이제 * * * * *을 00 12 * * *로 바꿔줘서, 매일 정오에 금일 발표된 확진자수를 알려주는 명령까지 완성했다.
그런데 이 로직이 제대로 돌아갈 수 있으려면, 매일 정오에 내 맥북이 켜져있어야 한다. 당장 오늘만 하더라도 정오에 맥북이 켜져 있지 않았기 때문에 슬랙 채널에 뜨지 않았다. 그래서, AWS의 힘을 빌려 가상으로 존재하는 컴퓨터 한 대를 만들어서 그 서버에서 git clone을 받아서 켜두도록 해야겠다는 생각을 하게 되었다. 그렇게 된다면, AWS 자체에서 서버를 항상 켜두기 때문에 내 맥북이 켜져 있지 않더라도 언제나 crontab 명령을 작동하게 할 수 있다. 오늘은 일단 그래서, AWS EC2 인스턴스(가상의 컴퓨터)를 만들고 내 터미널에서 해당 인스턴스에 접근하는 것까지 끝냈다. EC2 인스턴스 접속은
$ ssh -i .ssh/[파일이름].pem ec2-user@[DNS주소]
로 해야 한다.
git install도 한 지라, 이제 github.com/steadily-worked/covid19-today-slackbot을 clone해와야 되는데..
문제는 이 파이썬 파일이 동작하려면 Slackbot의 토큰이 필요하고, 그 토큰을 원래는 .py에 보이게끔 넣어서 실행을 하는 방식인데, 보안 상의 문제로 git에 토큰을 올리면 안되기 때문에 올리지 않았다는 점이다. 그래서, 현재는 git clone을 해올 수가 없다. 이걸 안보이게끔 따로 저장을 한 후에 git clone을 해야 되는데, 따로 저장을 하는 법을 아직 찾지 못해서 멈췄다. 이제 저장하는 방법을 찾아봐야겠다. EC2 인스턴스 만드는 방법은 .. makemethink.tistory.com/181?category=782008 여기에 아주 잘 나와있어서 여기를 참고했다.
AWS EC2 서버에서 가상환경 이름을 slackbot으로 만든 후에 켜는 것까지 완료했다.
EB CLI를 설치한 후
$ virtualenv /tmp/slackbot(여기다가 원하는 이름을 적으면 됨. 본인은 slackbot이라고 정했음.
이렇게 하면, 가상환경이 만들어지고,
source /tmp/slackbot/bin/activate
이 코드로 가상환경을 켤 수 있다. 일반 Python과 마찬가지로, deactivate만 입력하면 가상환경이 꺼진다.
이제 토큰을 안보이는 다른 곳에 두고 반영하는 방법을 찾아봐야겠다.
'Slackbot' 카테고리의 다른 글
오늘의 코로나 Slackbot 개선하기(예정) (0) | 2021.01.11 |
---|---|
1/5 오늘의 코로나 Slackbot 완성 (11) | 2021.01.05 |
1/1 확진자 수 크롤링 후 Slackbot을 통해 채널에 전송하기 (0) | 2021.01.01 |
12/30 Slacker를 이용해서 bots-playground에 메시지 띄우기 (0) | 2020.12.30 |
12/29 SlackBot 추가하기 & import slack이 안 되는 오류 해결 (0) | 2020.12.29 |