본문 바로가기
AWS

4) cloud9실행부터 slack 챗봇 연결까지 +실수했던 부분

by Mr Baek 2023. 9. 22.

AWS Cloud9이란 무엇입니까?

- AWS Cloud9은 클라우드 기반 통합 개발 환경(IDE)이다.
로컬 IDE에서 할 수 있는 코딩, 빌드, 실행, 테스트 및 디버깅 등의 일들을 클라우드에서 수행하는 것이다.
웹 브라우저를 통해 AWS Cloud9 IDE에 접근한다.

 

AWS Cloud9 서비스 세부 정보 

제품  설명  무료 등급 혜택 세부정보  제품 가격
AWS Cloud9

브라우저만으로 코드를 작성, 실행 및 디버깅할 수 있는 클라우드 기반 IDE입니다. 현재 프리 티어 제안이 없습니다. https://aws.amazon.com/ko/cloud9/pricing/?p=pm&c=cloud9&z=4
AWS Lambda

이벤트에 대한 응답으로 코드를 실행하고 컴퓨팅 리소스를 자동으로 관리하는 컴퓨팅 서비스입니다. 항상 무료
월별 무료 요청 100만 건
 월별 최대 320만 초의 컴퓨팅 시간
https://aws.amazon.com/ko/lambda/pricing/?p=pm&c=cloud9&z=4

 

 

AWS Cloud9 만드는 법

-aws 계정을 로그인한다.

 

 

-검색창에 cloud9을 검색한다

 

-주황색으로 된 Create environment 버튼을 클릭한다.

처음 생성을 한다면 아래화면이 나온다. 

 

 

다른 환경이 이미 있거나 다른 경로로 들어갔다면 아래와 같은 화면이 뜰 수도 있습니다. 동일하게 주황색버튼을 클릭합니다.

 

-환경 설정하기 

-이름 정하기(너가 원하는대로!)

 

-원격으로 어떤 환경으로 쓸지 정하기

AWS EC2서버를 만들고 붙여서 쓸건인지 개인 서버로 접속해서 쓸 것인지 선택하기(서버를 소유하고 있지않으면 (새로운 ec2 인스턴스로!!))

Free Tier를 사용하실거라면 t2.micro 인스턴스를 선택합니다.(돈을 쓰기싫다면!!)

 

 

그 다음으로 태그를 설정해주겠다.

태그를 쓰는 이유는?

회사 내부에서는 팀으로 그룹을 지어 구분하기도 하는데, 만약 태그를 사용하지않는다면 소규모는 구분할 수 있겠지만, 만 명이 넘는 수라면 불가능할 것이다.

그래서 태그를 사용하여, IAM리소스를 비롯한 태깅을 지원하는 AWS리소스에 대한 엑세스를 제어할 수 있다.

(나도 아직 배우는 단계라서 따로 블로깅을 하겠다)

키 = Name , 값 =JongHun

키 =TeamName  , 값 = WKU으로 설정했다. 

 

그리고 생성 클릭!!!!!

 

---------------

그럼 이렇게 열림표시가 있을거다. 

나는 이미 환경 생성이 되어있어서 이름이 다를 것이다.

 

 

 

로딩을 기다리다보면..

 

 

파란색 네모칸 친 곳에 설치를 몇가지 진행할 거다.

 

cd /

-루트 디렉토리는 모든 디렉토리와 파일의 시작점이기 때문에 시스템 전체에 대한 접근 권한을 갖게 됩니다. 주의해야 할 점은 루트 디렉토리에서 실수로 파일을 삭제하거나 변경하면 시스템에 심각한 문제가 발생할 수 있으므로 조심해서 사용해야 합니다. 일반적으로 시스템 관리 작업을 수행할 때나 중요한 파일을 조작할 때만 루트 디렉토리로 이동하는 것이 권장됩니다.(chatgpt)

 

sudo su -

-리눅스 시스템에서 사용자가 슈퍼유저(root)로 스위치하는 명령어입니다. 이 명령어를 실행하면 현재 사용자의 권한을 슈퍼유저 권한으로 변경하고, 슈퍼유저(root) 계정으로 로그인합니다. 주로 시스템 관리 작업이나 시스템 설정 변경 시에 사용됩니다.(chatgpt)

 

 

mkdir chatbot

-현재 작업 디렉토리에 "chatbot"이라는 이름의 새로운 디렉토리가 생성됩니다. 디렉토리는 파일을 저장하거나 조직화하기 위한 폴더로 사용되며, mkdir 명령어를 사용하여 새로운 디렉토리를 만들 수 있습니다.(chatgpt)

 

sudo yum update -y

명령어는 슈퍼유저 권한으로 시스템의 모든 패키지를 최신 버전으로 업데이트하는 명령어입니다. 이렇게 하면 시스템의 보안을 강화하고 최신 버전의 소프트웨어를 사용할 수 있게 됩니다.

 

sudo yum install python3 pip -y

명령어는 슈퍼유저 권한으로 시스템에 Python 3와 pip를 설치하는 명령어입니다. 이를 통해 파이썬 프로그래밍을 시작하고 필요한 패키지를 설치할 수 있게 됩니다.

 

python3 --version

명령어는 시스템에 설치된 Python 3 버전을 확인하는 명령어입니다.

pip3 --version

명령어는 시스템에 설치된 pip3 (Python 패키지 관리자)의 버전을 확인하는 명령어입니다.

 

pip install slack_bolt

명령어는 파이썬 패키지 관리자인 pip를 사용하여 "slack_bolt" 패키지를 설치하는 명령어입니다.

 

-----------------

그런다음

파일에 오른쪽 마우스를 클릭한 다음 'New File'을 만들어줍니다.

 

 

 

이름을 (하고싶은 이름).py

나는 test.py 로 설정했다.

 

config.py 파일로 하나 더 만들어주었다.

test.py를 누룬다음 아래 코드를 그대로 넣으면 된다.

import config
import re
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler

app = App(token=config.bot_token)


@app.event("app_mention")  # 앱을 언급했을 때
def who_am_i(event, client, message, say):
	print('event:', event)
	print('client:', client)
	print('message:', message)
	say(f'hello! <@{event["user"]}>')

@app.message(re.compile("lunch"))
def regex(event, client, message, say):
	say('eat burger')

if __name__ == '__main__':
    SocketModeHandler(app, config.app_token).start()

이 코드 예제는 Slack 봇 애플리케이션을 만들기 위한 기본 구조를 보여주며, Slack Bolt 라이브러리를 사용하여 Slack과 상호작용하는 방법을 보여준다.

 

그리고 컨트롤+s로 저장을 꼭 해준다.!!

 

다음으로  config.py에 slack api때 메모장에 저장해둔 토큰들을 쓸 차례이다.

https://backback-b.tistory.com/11

 

3)slack으로 챗봇만들기 -앱세팅(엄청쉬운설명)

Slack Api 사이트로 접속한다.(https://api.slack.com/) Slack은 생산성 플랫폼입니다 Slack은 팀과 커뮤니케이션할 수 있는 새로운 방법입니다. 이메일보다 빠르고, 더 조직적이며, 훨씬 안전합니다. slack.com

backback-b.tistory.com

토큰을 모르거나 토큰을 까먹었을 경우 여기서 다시 생성해보자!!

 

app_token = '앞서 생성한 app_token'


bot_token = '앞서 생성한 bot_token'

 

이렇게하고 저장!!!필수!!!

 

------------------------------

그리고 Run을 누르면!!

 

아래 네모칸을 보면 Blot app is running! 이 뜨면 성공!!

 

슬랙에 가서 @본인이 지정한 슬랙봇이름을 하면 

이렇게 슬랙봇이 인사를 해준다. ㅜㅜ

여기까지 난 굉장히 오랜시간이 걸렸다. 

노션을 보고 그대로 따라하면 누구나할 수 있지만, 하지 못 하는 사람도 있더라..

그래서 내가 어디서 고생을 했는지 알려주겠다.

-------------------------------------------------------끝-----------------------------------------------------

 

전에 사용했던거라 슬랙봇 이름이 다르다.

게임봇을 아무리 부르는데 대답이없다!

이걸 6~7번은 새로만드는 과정을 반복했고, 내가 보고 따라한 노션을 처음부터 끝까지 똑같이! 따라해보았다. 워크스페이스이름부터 채널이름까지..

 

근데 oAuth&Permissions 에 Scopes을 설정하고 Soket Mode를 들어갔다가 다시 oAuth&Permissions 들어가서 Socpes를 보는데 초기화가 되어있는거다!

그래서 여기가 문제인거같아서 다시 작성하고보니 , 아래 조그만한 저장버튼을 누른뒤에 해결할 수 있었다.

 

 

그리고

config.py에 

app_token = '앞서 생성한 app_token'

bot_token = '앞서 생성한 bot_token'

를 하지않고

 

test.py에 토큰을 같이 적는 경우도 몇번 보았다.

미리 보지 못 안았으면 나도 똑같은 실수를 했을 것이다.