import sys import pymysql import json import decimal import boto3 import uuid import logging from datetime import datetime, timedelta class DecimalnDateTimeEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, decimal.Decimal) or isinstance(obj, datetime): return str(obj) return json.JSONEncoder.default(self, obj) gurigalmae_host = "121.163.199.101" gurigalmae_port = 3306 gurigalmae_id = "valley" gurigalmae_pw = "valley123" gurigalmae_dbname = "valleydb" def lambda_handler(event, context): logger = logging.getLogger() logger.setLevel(logging.INFO) try: conn = pymysql.connect(host=gurigalmae_host, port=gurigalmae_port, user=gurigalmae_id, passwd=gurigalmae_pw, db=gurigalmae_dbname, connect_timeout=5) except: logger.error("ERROR: Unexpected error: Could not connect to MySql instance.") sys.exit() logger.info("SUCCESS: Connection to RDS mysql instance succeeded") today = datetime.now() yesterday = today - timedelta(days=1) sql = "SELECT * FROM DAYENERGY WHERE ENERGY_YEAR={} AND ENERGY_MONTH={} AND ENERGY_DAY={}".format(yesterday.year, yesterday.month, yesterday.day) with conn.cursor(pymysql.cursors.DictCursor) as cur: cur.execute(sql) logger.info(sql) rows = cur.fetchall() data = "" for row in rows: data += json.dumps(row, cls=DecimalnDateTimeEncoder) + '\n' logger.info(row) s3=boto3.resource('s3') object = s3.Object('hdci-ambt-homenetserver-raw','dev/site_name=gurigalmae/table_name=dayenergy/year={}/month={}/ambt-preden-lambda-migration-dev-{}-{}-{}-{}'.format(yesterday.year, yesterday.month, yesterday.year, yesterday.month, yesterday.day, str(uuid.uuid4()))) return object.put(Body=data)