PYthon AWS boto3

간단한 대쉬보드 구축하기

저는 같이 공부하는 팀원들과, 노션을 이용해서 공부한 내용을 공유하고 있습니다.

그러던 중, 팀원들의 공부 시간을 비교해서 누군가는 뿌듯함을 누군가는 분발할 수 있게 대쉬보드를 구축하고 싶었습니다.

위와 같은 모습으로, 제목, 학습시간 등을 공유하고 있습니다.


서비스 구성도

간단한 구성도는 위와 같이 구성됩니다.

  1. 사용자들이 노션을 이용해서, 노션에 글을 공유합니다.
  2. 노션으로 부터, CSV를 추출해서 다운받습니다.
  3. Python matplolib를 이용해서 원하는 형태의 데이터 시각화를 진행합니다.
  4. Python boto3를 이용해서 AWS S3로 전송합니다.
  5. S3를 통해서 이를 공유합니다.


노션 csv 추출하기

노션의 경우 우측 상단을 클릭하면 다음과 같이 내보내기 기능이있습니다.

이후 Notion API 및 Airflow를 이용해서 자동화 구축을 할 예정에 있습니다. ( Notion API를 통해서 CSV 추출이 가능해 질 때. )


Python matplotlib를 통한 데이터 시각화 & boto3

저는 Python matplotlib를 이용해서, 제가 원하는 간단한 시각화를 진행했습니다.

간단하게 일주일간 공부시간을 누적해서 이를 표현해주는 라인차트입니다.

위와 같은 모습으로, 각 사람마다 일주일간 몇시간을 공부 했는지 알 수 있고, 이를 통해 누군가는 분발을, 누군가는 만족감을 주고 싶었습니다.


이후 가장 중요한 boto3를 이용해서 이를 s3로 전송하는 방법입니다.

boto3에 대한 내용은 Boto3 사용하기 를 참고해 주세요!

만약 Boto3를 통해 구현한 코드를 공유하는 상황이 생긴다면, 보안에 문제없게 조심해주세요. ( AWS Secret key 등 )

모든 코드는 제 깃헙에 올려놨으니 참고해주세요.


이후 이를 출력해줄 index.html파일 하나만 만들어주면 됩니다.

이 또한 제 깃헙에 있으니 참고해주세요.


S3를 통해 사용하기

이제 마지막 단계입니다. 모든 환경이 구축됬으면 S3주소를 통해서 접속하면 됩니다.

위와 같이 S3 객체 정보를 보면 객체 URL이 있습니다. 이를 통해 대쉬보드를 공유할 수 있습니다.


+ bash로 한번에 클릭으로 최신화

원래의 목표는 Notion API를 통해 CSV를 추출하고, 이를 Airflow와 연동하여 매일 02시에 최신화하는 식으로 운영하고 싶었지만,

안타깝게도, CSV데이터를 추출할 수 있는 Notion API는 보이지 않았습니다.

이로 인해 CSV를 계속 다운로드하고, python 가상환경을 키고, python파일을 실행하는 것을 반복하는 일을 진행해야 했습니다.

이러한 번거러움이 귀찮아서 이를 bash 파일을 통해서 한번에 진행하고자 합니다.

cd ..
source venv/bin/activate
cd boto3
python3 make_plot.py

방법은 간단하게 기존에 터미널에서 진행했던 과정을 bash로 사용하면 됩니다.

이렇게 구현할 경우, 노션으로부터 CSV를 다운받고 bash파일을 한번 실행해주면 최신화가 완료됩니다.