def handler()

in src/lambda.d/nexuspreconfigure/index.py [0:0]


def handler(event, context):

    def cfn_error(message=None):
        logger.error("| cfn_error: %s" % message)
        cfn_send(event, context, CFN_FAILED, reason=message)

    try:
        logger.info(event)

        # cloudformation request type (create/update/delete)
        request_type = event['RequestType']
        
        # extract resource properties
        props = event['ResourceProperties']
        old_props = event.get('OldResourceProperties', {})

        if request_type == "Create":
            physical_id = f"nexus.on.aws.{str(uuid4())}"
        else:
            physical_id = event.get('PhysicalResourceId', None)
            if not physical_id:
                cfn_error("invalid request: request type is '%s' but 'PhysicalResourceId' is not defined" % request_type)
                return
        if request_type != "Delete":
            username = props['Username']
            password  = props['Password']
            endpoint = props['Endpoint']
            blobstoreName = props['BlobStoreName'] if 'BlobStoreName' in props else 's3-blobsstore'
            bucketName = props['S3BucketName']
            nexusHelper = nexus.Nexus(username=username, password=password, endpoint=endpoint)
            nexusHelper.deleteAllRepos()
            nexusHelper.removeDefaultFileBlobstore()
            nexusHelper.createS3Blobstore(blobstoreName, bucketName, '-1')
        cfn_send(event, context, CFN_SUCCESS, physicalResourceId=physical_id)
    except KeyError as e:
        cfn_error(f"invalid request. Missing key {str(e)}")
    except Exception as e:
        logger.exception(str(e))
        cfn_error(str(e))