[Spotify Data Analysis/스포티파이 데이터 분석] Facebook(페이스북)메신저와 AWS Lambda, AWS Gateway API 연동, 파이썬 (14)

2020. 3. 24. 16:58Data Science/Data Analysis

AWS Lambda 함수에 외부 패키지를 해당 in-line 에디터에서 설치할 수 없기 때문에 로컬에서 작성한 코드와 패키지들을 업로드 해서 사용 하는 방법에 대해서 알아보겠습니다.

 

파이썬 코드 작성 아래와 같이 작성합니다.

 

import json
import os
import logging
import sys
import requests
import pymysql
sys.path.append('./libs')

PAGE_TOKEN = os.environ['PAGE_TOKEN']
VERIFY_TOKEN = "verify_7942"


def lambda_handler(event, context):
    # event['params'] only exists for HTTPS GET
    if 'params' in event.keys():
        if event['params']['querystring']['hub.verify_token'] == VERIFY_TOKEN:
            return int(event['params']['querystring']['hub.challenge'])
        else:
            logging.error("wrong validation token")
            raise SystemExit

    else:
        return None

 

1. 폴더를 두개 만듭니다(facebook_lambda 와 그 안에 libs)

2. requirements.txt 파일을 만듭니다. 그리고 필요한 패키지들을 입력 합니다.

 

 

 

해당 폴더로 이동 한 뒤 필요한 모듈들을 libs 폴더에 설치 합니다.

pip3 install -r requirements.txt -t ./libs

zip spotify_facebook.zip -r *

 

해당 폴더에 있는 파일들을 다 zip으로 압축 합니다.

 

 

해당 zip 파일을 S3 버킷에 업로드 합니다.

aws2 s3 cp spotify_facebook.zip s3://facebook-messenger-spotify/spotify_facebook.zip

 

 

배포를 쉽게 하기 위해 쉘 스크립트를 하나 만듭니다. 

#!/bin/bash

rm *.zip
zip spotify_facebook.zip -r *

aws2 s3 rm s3://facebook-messenger-spotify/spotify_facebook.zip
aws2 s3 cp ./spotify_facebook.zip s3://facebook-messenger-spotify/spotify_facebook.zip
aws2 lambda update-function-code --function-name spotify-lambda --s3-bucket facebook-messenger-spotify --s3-key spotify_facebook.zip

 

 

AWS 람다로 와서 > 함수 코드 > Code entry type > Amazon S3에서 파일 업로드

 

Amazon S3 링크 URL 입력 > 저장 

 

 

lamda_handler.py를 클릭하면 위와 같이 zip 파일이 정상적으로 AWS 람다에 로딩이 되었습니다.

 

 

 

자 이제 다시 페이스북으로 가서 > 받아보기 추가

 

messages 체크 

 

 

만들었던 페이지로 가서 > 버튼 추가 > 

 

 

 

2단계 > Messenger 클릭 > 완료

 

 

 

Hello 타이핑

 

 

AWS CloudWatch > Logs > 로그를 확인 합니다.

 

 

INFO에 해당 로그가 잘 들어오는 것 을 확인 할 수 있습니다.

 

이로써 페이스북 메신저에 보낸 메세지가 AWS Gateway API를 통해서 Lambda 함수를 실행 시키는 것을 확인 할 수 있습니다.

이제 Facebook Develop 문서를 통해서 메세지를 보낼 경우 AWS RDS, Mysql DB에서 해당 하는 가수의 gerens를 가져와서 이렇게 보여줍니다. 

 

 

즈금 까지 로컬에서 작성한 코드와 패키지들을 업로드 해서 페이스북 메세지를 AWS Gateway API를 거쳐 AWS Lambda 함수까지 사용 하는 방법에 대해서 알아보았습니다.