본문 바로가기

일::개발

Python으로 Azure에 Serverless Telegram bot 만들기(1)

오랜만에 python 으로 텔레그램 봇 만들어서 Azure 에 돌려보기.

 

1. 텔레그램 봇 등록

 

오 이거 예전에 했던 것 기억 난다.

텔레그램 앱에서 @BotFather 에게 말 걸어서 봇 만들기

 

 

하단 Menu 눌러보면 할 수 있는 일들이 아주 친절하게 주루룩 나온다.

 

새 bot의 이름은 agent46, 사용자명은 agent46_bot으로 설정했다.

봇 설정을 이런 식으로 하게 해주다니. 예전에도 감탄했던 기억이 나는데, 다시 한번 오오... 감탄하면서 넘어간다.

 

2. 프로젝트 생성

노트북 바꾼지 한참 된 것 같은데 Python이 안 깔려 있어서 깜짝 놀랐다.

일단 설치

 

> brew install pyenv
> brew install pyenv-virtualenv

 

VSCode 에서 Azure Tools extension을 설치하면 왼쪽 툴바에 Azure 메뉴가 생성된다.

 

 

그 전에 당연히 Azure 계정이 있어야 한다.

Azure Portal에서 무료 평가판 계정을 하나 만들어두고 로그인 해주면 Resources 하위에 생성할 수 있는 서비스들이 주루룩 나온다.

 

Resources 에서 리소스를 생성하면 Azure 가상환경에 해당 리소스가 실제로 생성된다.

리모트에서 실행하기 전에 로컬에 프로젝트를 생성해보자.

 

 

하단 Workspace 에서 Create Functions 선택하고 

1) 새 폴더 생성

2) language는 Python

3) Python interpreter 는 python3 (여기서 선택하면 프로젝트 하위에 해당 버전의 python이 설치된다.)

4) HTTP trigger

5) function name

6) Authorization Level은 Function

 

여기까지 해주고 Explorer탭을 보면 로컬 프로젝트가 생성되어 있다. 

 

 

 

F5 를 눌러서 실행해보니 어라?

 

 

아오. azure-functions-core-tools 가 M1 맥에서 안 돌아가는 문제가 있다.

터미널에서 돌릴 때는 터미널에 rosetta 설정해주면 된다는데, VSCode 에서 돌아가게 하려면 이렇게 해본다.

 

> brew uninstall azure-functions-core-tools@4              //  brew로 설치한 azure-functions-core-tools 는 삭제한다.
> nvm --version             // nvm이 설치되어 있지 않으면 설치한다.
0.39.1
> nvm install 14.17.6       // node 14.17.6 설치
> npm -g install azure-functions-core-tools@4.0.4483     // npm 으로 azure-functions-core-tools 설치
> pip3 install grpcio       // grpcio 패키지 설치

> cp ~/.pyenv/versions/3.9.11/lib/python3.9/site-packages/grpc/_cython/cygrpc.cpython-39-darwin.so ~/.nvm/versions/node/v14.17.6/lib/node_modules/azure-functions-core-tools/bin/workers/python/3.9/OSX/X64/grpc/_cython/cygrpc.cpython-39-darwin.so

 

이렇게 해주면 된다.

여러 가지 과정을 거치는 것 같지만 요약하면 

1) brew로 설치한 azure-functions-core-tools 는 삭제한다.  (brew list 로 확인)

2) nvm이 설치되어 있지 않으면 설치해준다.

3) node 14.17.6 버전 설치

4) npm 으로 azure-functions-core-tools@4.0.4483 을 설치한다. -g 옵션을 줘서 global로 설치한다.

5) PIP 이용해서 grpcio 설치한다. 어느 PIP를 사용했는지에 따라 grpcio가 설치되는 위치가 다르니 which pip 해보고 설치되는 위치를 확인한다. 예) which pip 결과가 ~/.pyenv/versions/3.9.11/bin/pip 라면 grpcio 패키지는 ~/.pyenv/version/3.9.11/lib/python3.9/site-packages/ 아래에 설치된다.

6) 위에서 확인한 경로에 설치된 cygrpc.cpython-39-darwin.so 를 ~/.nvm/versions/node/v14.17.6/lib/node_modules/azure-functions-core-tools/bin/workers/python/3.9/OSX/X64/grpc/_cython/ 에 설치해준다. 

 

이렇게 해주면 실행 성공!

 

아오 실행 환경 만드는게 왤케 어려워... 나머지는 다음에