in ApplicationCode/dockerfiles/stage-a-preupdate-metadata/src/lambda_function.py [0:0]
def lambda_handler(event, context):
"""Updates the objects metadata catalog
Arguments:
event {dict} -- Dictionary with details on S3 event
context {dict} -- Dictionary with details on Lambda context
Returns:
{dict} -- Dictionary with Processed Bucket and Key
"""
try:
logger.info('Building object metadata from S3 write event')
component = context.function_name.split('-')[-2].title()
object_metadata = json.loads(event)
object_metadata['peh_id'] = octagon_client.start_pipeline_execution(pipeline_name='{}-{}-pre-stage'.format(object_metadata['team'], object_metadata['pipeline']),
comment=event)
octagon_client.update_pipeline_execution(status="Pre-Stage {} Processing".format(component), component=component)
# Add business metadata (e.g. object_metadata['project'] = 'xyz')
logger.info('Initializing DynamoDB config and Interface')
dynamo_config = DynamoConfiguration()
dynamo_interface = DynamoInterface(dynamo_config)
logger.info('Storing metadata to DynamoDB')
dynamo_interface.update_object_metadata_catalog(object_metadata)
logger.info('Passing arguments to the next function of the state machine')
except Exception as e:
logger.error("Fatal error", exc_info=True)
octagon_client.end_pipeline_execution_failed(component=component,
issue_comment="Pre-Stage {} Error: {}".format(component, repr(e)))
raise e
return {
'statusCode': 200,
'body': object_metadata
}