import json import boto3 import datetime import random import os import urllib3 s3client = boto3.client('s3') http = urllib3.PoolManager() def gen_surl(bucketname, keyname): url = s3client.generate_presigned_url(ClientMethod='get_object', Params={ 'Bucket': bucketname, 'Key': keyname}) return url def b_putpriv(bucket, key, ContentType,body): srep = s3client.put_object( ACL='private', Body=body, Bucket=bucket, Key=key, ContentType=ContentType,) #print(srep) return srep def b_get_obj(bucket, bkey): object = s3client.get_object(Bucket=bucket, Key=bkey) return(object['Body'].read().decode('utf-8')) def httpget(ep): _ret = {} _headers = {"Content-Type":"application/json"} _res = http.request('GET',ep) _ret = _res.data.decode('utf-8') return _ret def process_files(event): current_date = str(datetime.date.today()) _time = current_date.split('-') __year = f"{_time[0]}-" __month= f"{_time[1]}-" __day = f"{_time[2]}/" bucket = os.environ['NeptuneBucket'] _fprefix=f'filestolaod/{__year}{__month}{__day}' for f in event: lkey = f['key'].split('/')[2] localkey= f"{_fprefix}{f['AccountId']}/{f['region']}/{lkey}" _buf = f"Saving s3://{bucket}/{localkey}" print(_buf) _s3content = httpget(f['signedurl']) b_putpriv(bucket, localkey, 'html/text',_s3content) return _buf def lambda_handler(event, context): print(json.dumps(event)) html = process_files(event) return { 'statusCode': 200, 'body': html }