lambda_function.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import sys
  2. import pymysql
  3. import json
  4. import decimal
  5. import boto3
  6. import uuid
  7. import logging
  8. from datetime import datetime, timedelta
  9. class DecimalnDateTimeEncoder(json.JSONEncoder):
  10. def default(self, obj):
  11. if isinstance(obj, decimal.Decimal) or isinstance(obj, datetime):
  12. return str(obj)
  13. return json.JSONEncoder.default(self, obj)
  14. gurigalmae_host = "121.163.199.101"
  15. gurigalmae_port = 3306
  16. gurigalmae_id = "valley"
  17. gurigalmae_pw = "valley123"
  18. gurigalmae_dbname = "valleydb"
  19. def lambda_handler(event, context):
  20. logger = logging.getLogger()
  21. logger.setLevel(logging.INFO)
  22. try:
  23. conn = pymysql.connect(host=gurigalmae_host, port=gurigalmae_port, user=gurigalmae_id, passwd=gurigalmae_pw, db=gurigalmae_dbname, connect_timeout=5)
  24. except:
  25. logger.error("ERROR: Unexpected error: Could not connect to MySql instance.")
  26. sys.exit()
  27. logger.info("SUCCESS: Connection to RDS mysql instance succeeded")
  28. today = datetime.now()
  29. yesterday = today - timedelta(days=1)
  30. sql = "SELECT * FROM DAYENERGY WHERE ENERGY_YEAR={} AND ENERGY_MONTH={} AND ENERGY_DAY={}".format(yesterday.year, yesterday.month, yesterday.day)
  31. with conn.cursor(pymysql.cursors.DictCursor) as cur:
  32. cur.execute(sql)
  33. logger.info(sql)
  34. rows = cur.fetchall()
  35. data = ""
  36. for row in rows:
  37. data += json.dumps(row, cls=DecimalnDateTimeEncoder) + '\n'
  38. logger.info(row)
  39. s3=boto3.resource('s3')
  40. 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())))
  41. return object.put(Body=data)