Facebook
From Corrupt Hog, 1 Year ago, written in Python.
This paste is a reply to software Engineer from soumil - view diff
Embed
Download Paste or View Raw
Hits: 191
  1. import json
  2. import boto3
  3.  
  4. AWS_ACCESS_KEY = "XXXXXXXXXXXX"
  5. AWS_SECRET_KEY = "XXXXXXXX"
  6. AWS_REGION_NAME = "XXXX"
  7. BUCKET = "XXXXX"
  8.  
  9.  
  10. class AWSS3(object):
  11.  
  12.     __slots__ = ["BucketName", "client"]
  13.  
  14.     def __init__(self, BucketName = BUCKET):
  15.         self.BucketName = BucketName
  16.         self.client = boto3.client("s3",
  17.                                    aws_access_key_id=AWS_ACCESS_KEY,
  18.                                    aws_secret_access_key=AWS_SECRET_KEY,
  19.                                    region_name=AWS_REGION_NAME)
  20.  
  21.     def putFiles(self, Response=None, Key=None):
  22.         """
  23.        Put the File on S3
  24.        :return: Bool
  25.        """
  26.         try:
  27.  
  28.             Response = json.dumps(Response)
  29.             response = self.client.put_object(
  30.                 ACL='private',
  31.                 Body=bytes(json.dumps(Response).encode("utf-8")),
  32.                 Bucket=self.BucketName,
  33.                 Key=Key)
  34.             return response
  35.         except Exception as e:
  36.             print("Error : {} ".format(e))
  37.             return {"Error":str(e)}
  38.  
  39.     def ItemExists(self, Key):
  40.         try:
  41.             # get the Response for teh Current File
  42.             response_new = self.client.get_object(Bucket=self.BucketName, Key=str(Key))
  43.             return True
  44.         except Exception as e:
  45.             return False
  46.  
  47.     def getItem(self, Key):
  48.         try:
  49.             response_new = self.client.get_object(Bucket=self.BucketName, Key=str(Key))
  50.             return response_new["Body"].read()
  51.         except Exception as e:
  52.             return False
  53.  
  54.     def operation(self, data=None, key=None):
  55.  
  56.         """
  57.        This checks if Key is on S3 if it is return the data from s3
  58.        else store on s3 and return it
  59.        """
  60.  
  61.         flag = self.ItemExists(Key=key)
  62.         if flag:
  63.             data = self.getItem(Key=key)
  64.             return data
  65.         else:
  66.             self.putFiles(Key=key, Response=data)
  67.             return data
  68.  
  69.  
  70.  
  71. def lambda_handler(event, context):
  72.  
  73.     body = event.get("Records")[0].get("body")
  74.  
  75.     body  = json.loads(body)
  76.     name = body.get("count")
  77.     filename = name+".json"
  78.  
  79.     helper = AWSS3()
  80.     response = helper.putFiles(Key=filename,Response=body)
  81.  
  82.     return {
  83.         'statusCode': 200,
  84.         'body': json.dumps('Hello from Lambda!')
  85.     }
  86.