import json
import boto3
AWS_ACCESS_KEY = "XXXXXXXXXXXX"
AWS_SECRET_KEY = "XXXXXXXX"
AWS_REGION_NAME = "XXXX"
BUCKET = "XXXXX"
class AWSS3(object):
__slots__ = ["BucketName", "client"]
def __init__(self, BucketName = BUCKET):
self.BucketName = BucketName
self.client = boto3.client("s3",
aws_access_key_id=AWS_ACCESS_KEY,
aws_secret_access_key=AWS_SECRET_KEY,
region_name=AWS_REGION_NAME)
def putFiles(self, Response=None, Key=None):
"""
Put the File on S3
:return: Bool
"""
try:
Response = json.dumps(Response)
response = self.client.put_object(
ACL='private',
Body=bytes(json.dumps(Response).encode("utf-8")),
Bucket=self.BucketName,
Key=Key)
return response
except Exception as e:
print("Error : {} ".format(e))
return {"Error":str(e)}
def ItemExists(self, Key):
try:
# get the Response for teh Current File
response_new = self.client.get_object(Bucket=self.BucketName, Key=str(Key))
return True
except Exception as e:
return False
def getItem(self, Key):
try:
response_new = self.client.get_object(Bucket=self.BucketName, Key=str(Key))
return response_new["Body"].read()
except Exception as e:
return False
def operation(self, data=None, key=None):
"""
This checks if Key is on S3 if it is return the data from s3
else store on s3 and return it
"""
flag = self.ItemExists(Key=key)
if flag:
data = self.getItem(Key=key)
return data
else:
self.putFiles(Key=key, Response=data)
return data
def lambda_handler(event, context):
body = event.get("Records")[0].get("body")
body = json.loads(body)
name = body.get("count")
filename = name+".json"
helper = AWSS3()
response = helper.putFiles(Key=filename,Response=body)
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}