import os import json import boto3 import logging import time logger = logging.getLogger() #Ken Walsh 4-20-2020 #Reporting s3client = boto3.client('s3') dyclient = boto3.client('dynamodb') ses_client = boto3.client('ses') def lambda_handler(event,context): _beg = "Servic Catalog Bulk Deployment for " _beg += "" _beg += "" _beg += "" localtime = time.asctime( time.localtime(time.time()) ) _th='' % localtime _r='' _th += '' _th += '' _th += '' _th += '' ########## tablename = os.environ['DynamoTablename'] sresults = dyclient.scan(TableName=tablename) if 'Items' in sresults: for t in sresults['Items']: _r += '' % t['status']['S'] _r += '' % t['launchparams']['M']['BatchId']['S'] if "BatchId" in t['launchparams']['M'] else "NONE" _r += '' % t['launchparams']['M']['UserName']['S'] _r += '' % t['scproductdetails']['M']['Status']['S'] _ret = _beg + ''+_th +'\n'+ _r +'
%s
StatusBatchIdUserSC Status%s%s%s%s
' #====================== m_event ={} m_event['etoemail'] = event['ReportEmail'] m_event['esubject'] = 'sc work spaces bulk deployment' DestBucket= os.environ['LambdaZipsBucket'] _skey = 'content/out/report.html' b_putpriv(DestBucket,_skey,_ret,"text/html") _l = gen_surl(DestBucket,_skey) m_event['ebody'] = _ret +'
Click me Report' if check_for_ses_email(m_event) == True: logger.info(sendemail(m_event)) event['EmailInfo'] = m_event return event ########################## ###S3 unctions ############################# 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,body,ctype): srep = s3client.put_object( ACL='private',Body=body,Bucket=bucket,Key=key, ContentType=ctype,) logger.info(srep) return srep ###SES functions############################ def check_for_ses_email(event): emails = ses_client.list_verified_email_addresses() _ret = False #logger.info(emails) if event['etoemail'] in emails['VerifiedEmailAddresses']: logger.info('Found ' + event['etoemail'] ) _ret = True else: response = ses_client.verify_email_identity(EmailAddress= event['etoemail']) logger.info('Email address not Found ' + event['etoemail'] +" Verification sent") return _ret def sendemail(event): charset = "UTF-8" try: #Provide the contents of the email. response = ses_client.send_email( Destination={ 'ToAddresses': [ event['etoemail'], ], }, Message={ 'Body': { 'Html': { 'Charset': charset, 'Data': event['ebody'], }, 'Text': { 'Charset': charset, 'Data': event['ebody'], }, }, 'Subject': { 'Charset': charset, 'Data': event['esubject'], }, }, Source=event['etoemail'], ) except Exception as e: logger.exception(e) return(e) else: return('EmailSent to ' + event['etoemail'])