def lambda_handler()

in source/aws_lambda/s3_event/handler.py [0:0]


def lambda_handler(event, context):
    """Handles an S3 Event Notification (for any .json file written to any subfolder in "train/"
    :param dict event: AWS Lambda Event (in this case, an S3 Event message)
    :param context:
    :return: None
    """
    event: S3Event = S3Event(event)
    bucket = event.bucket_name
    s3 = get_service_client("s3")

    for record in event.records:
        key = record.s3.get_object.key
        logger.info(
            f"processing Amazon S3 event notification record for s3://{bucket}/{key}"
        )
        metrics.add_metric("ConfigurationsProcessed", unit=MetricUnit.Count, value=1)

        s3_config = s3.get_object(Bucket=bucket, Key=key)
        config_text = s3_config.get("Body").read().decode("utf-8")

        # create the configuration, check for errors
        configuration = Configuration()
        configuration.load(config_text)
        if configuration.errors:
            send_configuration_error(configuration)
            metrics.add_metric(
                "ConfigurationsProcessedFailures", unit=MetricUnit.Count, value=1
            )
            return

        # configuration has loaded, validate it
        configuration.validate()
        if configuration.errors:
            metrics.add_metric(
                "ConfigurationsProcessedFailures", unit=MetricUnit.Count, value=1
            )
            send_configuration_error(configuration)
        else:
            config = configuration.config_dict
            config = set_bucket(config, bucket, key)
            metrics.add_metric(
                "ConfigurationsProcessedSuccesses", unit=MetricUnit.Count, value=1
            )
            start_execution(config)