Grafana 대시보드 추출 후 구글 드라이브 업로드 방법(2)

Jiyeon's TechNote·2022년 1월 18일
0
post-custom-banner

두번째 포스팅은 추출한 pdf파일을 드라이브에 자동으로 업로드 하기 위한 인증 설정 방법과 업로드하는 간단한 파이썬 스크립트에 관한 포스팅입니다.

  1. 구글 자격 증명 설정
    먼저 GCP에 접속하여 새프로젝트를 생성하고 OAuth 동의 화면을 구성

  2. API 라이브러리에서 Google Drive API 사용

  3. 사용자 인증 정보 만들기에서 OAuth 클라이언트 ID 생성
    로컬PC인 경우 - 데스크톱 클라이언트
    리눅스 서버의 경우 - TV클라이언트

    생성한 Client 인증 정보가 들어있는 JSON파일은 잘 가지고 있어야함

  4. 구글 드라이브에 파일을 업로드하는 파이썬 스크립트
    /home/ubuntu/daily_report/daily_infra_report/ 경로에 전날 일자를 이름으로 가진 pdf파일을 똑같이 전날 일자를 이름으로 내 드라이브에 업로드하는 스크립트

#!/usr/bin/python3

from googleapiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools
from datetime import date, timedelta


yesterday = date.today() - timedelta(1)

try :
    import argparse
    flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
except ImportError:
    flags = None

SCOPES = 'https://www.googleapis.com/auth/drive.file'
store = file.Storage('storage.json')
creds = store.get()

if not creds or creds.invalid:
    print("make new storage data file ")
    flow = client.flow_from_clientsecrets('/home/ubuntu/daily_report/<다운 받은 자격증명파일.json>', SCOPES)
    creds = tools.run_flow(flow, store, flags) if flags else tools.run(flow, store)

DRIVE = build('drive', 'v3', http=creds.authorize(Http()))

FILES = (
    ('/home/ubuntu/daily_report/daily_infra_report/' + yesterday.strftime( 'daily_infra_report_'+'%Y%m%d'+'.pdf')),
)

folder_id = '< 드라이브 URL중 마지막 암호화된 부분>'

for file_title in FILES :
    file_name = file_title
    metadata = {'name': yesterday.strftime( 'daily_infra_report_'+'%Y%m%d'+'.pdf'),
                'parents' : [folder_id],
                'mimeType': None
                }

    res = DRIVE.files().create(body=metadata, media_body=file_name).execute()
    if res:
        print('Uploaded "%s" (%s)' % (file_name, res['mimeType']))

이러한 스크립트를 crontab에 등록해두면 매일 인프라 현황을 수동으로 체크하지 않고 보고서로 빠르게 확인이 가능하니 걱정 없습니다!

profile
바쁘다 바빠 현대사회 엔지니어🙋‍♀️
post-custom-banner

0개의 댓글