본문 바로가기
Side Project/AWS와 Python으로 페이스북 챗봇 개발하기

AWS와 python으로 페이스북 챗봇 만들기 (1) - 아키텍처

by 잇서니 2020. 9. 27.
반응형

 

개요

페이스북 챗봇으로 아티스트 이름을 검색하면 아티스트의 정보와 spotify 링크를 알려주자!

 

 

 

 

FLOW

  • 저장소에 아티스트가 없는 경우

    • spotify API를 호출한다.
      • spotify에 해당 아티스트가 없는 경우
        • "Could not find artist. Please Try Again!"
      • spotify에 해당 아티스트가 있는 경우
        • 데이터를 가져온다.
        • RDS에 데이터를 저장한다. (insert)
        • "We added artist. Please try again in a second!"

 

  • 저장소에 아티스트가 있는 경우

    • RDS에 select 쿼리를 수행하여 데이터를 가져온다.
    • image url, genres 정보를 페이스북 API를 통해 제공한다.

 

 

 

아키텍처

 

1. 페이스북 챗봇 메신저와 AWS가 통신한다.

API gateway를 생성하면 endpoint URL이 만들어진다. 이 URL을 페이스북 챗봇 app에 설정하여 페이스북 챗봇 메신저와 AWS가 API를 주고 받을 수 있다.

 

2. API gateway를 통해 lambda function을 실행한다.

API gateway에서 메소드(GET, POST 등)를 설정할 때 어떤 lambda function을 사용할건지 설정한다.

이후 API gateway를 deploy 하면, lambda function에 API gateway가 붙게된다.

 

3. lambda function에서 RDS에 있는 데이터들을 읽는다. 혹은 데이터를 넣는다.

lambda function은 python 코드로 짠다. python의 boto3라는 패키지를 사용하여 AWS 서비스에 접근한다. 즉, boto3를 사용하여 RDS에 쿼리를 날려서 데이터를 읽고 넣는 작업을 할 수 있다.

 

4. lambda function에서 또 다른 lambda function을 호출하여 또 다른 작업을 한다.

boto3를 사용해서 lambda function을 호출(invoke)한다.

lambda가 다른 lambda를 호출하기 위해서는 권한이 필요하다. 권한 설정 어케하지?

 

5. 필요시 spotify API를 호출해서 데이터를 가져온다. 데이터는 RDS에 저장한다.

챗봇 사용자가 폴킴을 검색했는데 RDS에 폴킴이 없다면? spotify API를 호출해서 언능 폴킴 데이터를 가져온다. python의 requests 패키지를 사용하여 API를 호출하면 된다.

 

6. lambda function의 작업 내역을 로깅한다.

챗봇에 어떤 요청을 하고 어떤 요청을 받았는지 등 lambda function의 로그를 확인할 수 있다.

 

 

마치며

다음 포스팅에서는 상세한 개발코드를 담아볼 것이다.

 

 

 

반응형

댓글