Package: ohmylamb
ohmylambA simple library to use AWS resources. And speedup development for lambda projects.To installpip install ohmylambTo ConfigureTo configure define team name, application name and environment name in app.ini file.echo "[app]" >> app.ini
echo "name = adl-common-pytools" >> app.ini
echo "team = adl-dse" >> app.ini
echo "env = dev" >> app.iniTo import into code add followingfrom ohmylamb import ohmylamb as omlConfiguration handlingConfiguration management has been split into two areas.Application configuration. This comes from aap.ini file. This configuration can be accessed using following code.>>> oml.app_configuration("team")
'adl-dse'Infrastructure resources configurations. This comes from aws secret manager. In secret manager resource configuration are stored as key value pair under a key. Key convention: {team}/{env}/{resourcename}. Now team and env come from application configuration. And resource is the name of resource. Example:>>> oml.app_resource_conf("snowflake")
(None, {'url': '****************', 'username': '******', 'password': '*****', 'account': '****************', 'account_region': 'us-east-1', 'adm_warehouse_db_schema': '*****************', 'bd_warehouse_db_schema': '*************'})For this to work user running above code should have access to the secret manager key.
The above can also be fetched by following:@oml.AppResourceConfValue("snowflake")
def getSnoflakeCredential():
    pass
print(getSnoflakeCredential)
(None, {'url': '****************', 'username': '******', 'password': '********', 'account': '****************', 'account_region': 'us-east-1', 'adm_warehouse_db_schema': '***********', 'bd_warehouse_db_schema': '*************'})AWS Secret Manager>>> oml.aws_secret_manager_secrets_map("adl-dse/dev/adl-common-pytools")
(None, {'test1': 'value1', 'test2': 'value2', 'comment': 'This is a test configuration'})AWS S3Functions for S3oml.aws_s3_download_file(bucket, key, local_file_path) : will download file to local file pathoml.aws_s3_upload_file(bucket, key, local_file_path) : Will upload local file to s3SMS ServicesSMS notification can be set to one number or multiple by annotating a message:@oml.SMSNotifier(['+1949*******'])
def notifyRaman(msg):
    return msg

notifyRaman("This is a test message")SMS notification can be set to predefined group managed through githere.@oml.SMSGroupNotifier("data_engineering")
def notifyProductionIssue(msg):
    return msg

notifyProductionIssue("Test failed")SMS notification can be sent to individual by using their email id. Contact info is predefined individuals.csv file managed through githere.@oml.SMSIndividualNotifier("****@gmail.com")
def notifyRaman(msg):
    return msg

notifyRaman("This is a test message")Lambda Function DevelopmentFor lambda development create a main.py file with following content.import os
import ohmylamb.ohmylamb as oml

# Your code goes here
def handler():
    pass

# Keep this at the end of the file
def lambda_handler(event, context):
   handler(event,context)All that is need to be done is to be done in handler function.
Annotate the function for type of trigger. Example if its a cron jon annotate it with aws_lambda_cronJobHandler or if its s3 event job then annotate it with aws_lambda_s3EventHandler. Example:import os
import ohmylamb.ohmylamb as oml

# Your code goes here
@oml.aws_lambda_s3EventHandler
def handler():
    print("I will shout when time comes")

# Keep this at the end of the file
def lambda_handler(event, context):
    handler(event,context)