def custom_resource()

in source/lambda/solution_helper/lambda_function.py [0:0]


def custom_resource(event, _):
    request_type = event["RequestType"]
    resource_properties = event["ResourceProperties"]
    resource = resource_properties["Resource"]

    if resource == "UUID" and request_type == "Create":
        random_id = str(uuid.uuid4())
        helper.Data.update({"UUID": random_id})
    elif resource == "AnonymousMetric":
        try:
            metrics_data = _sanitize_data(copy(resource_properties))
            metrics_data["RequestType"] = request_type
            # determine query complexity, actual query not posted
            metrics_data["TwitterSearchQueryComplexity"] = len(
                re.split(" OR  | + ", os.environ.get("TWITTER_SEARCH_QUERY", ""))
            )
            metrics_data["TwitterSearchQueryLength"] = len(os.environ.get("TWITTER_SEARCH_QUERY", ""))
            metrics_data["TwitterLangFilter"] = os.environ.get("TWITTER_LANG_FILTER", "")
            metrics_data["TwitterIngestionFreq"] = os.environ.get("TWITTER_INGEST_FREQ", "")
            metrics_data["TopicJobFreq"] = os.environ["TOPIC_JOB_FREQ"]
            # determine query complexity, actual query not posted
            metrics_data["NewsFeedsSearchComplexity"] = len(os.environ.get("NEWSFEEDS_SEARCH_QUERY", "").split(","))
            metrics_data["NewsFeedsSearchQueryLength"] = len(os.environ.get("NEWSFEEDS_SEARCH_QUERY", ""))
            metrics_data["NewsFeedsIngestionFreq"] = os.environ.get("NEWSFEEDS_INGESTION_FREQ", "")
            metrics_data["YouTubeSearchQueryLength"] = len(os.environ.get("YOUTUBE_SEARCH_QUERY"))
            metrics_data["YouTubIngestionFreq"] = os.environ.get("YOUTUBE_INGESTION_FREQ", "")
            metrics_data["YouTubeChannelIDSet"] = "True" if os.environ.get("YOUTUBE_CHANNEL_ID", None) else "False"

            headers = {"Content-Type": "application/json"}
            payload = {
                "Solution": resource_properties["SolutionId"],
                "UUID": resource_properties["UUID"],
                "Version": resource_properties["Version"],
                "TimeStamp": datetime.utcnow().isoformat(),
                "Data": metrics_data,
            }

            logger.info(f"Sending payload: {payload}")
            response = requests.post("https://metrics.awssolutionsbuilder.com/generic", json=payload, headers=headers)
            logger.info(f"Response from metrics endpoint: {response.status_code} {response.reason}")
        except requests.exceptions.RequestException:
            logger.exception("Could not send usage data")
        except Exception:
            logger.exception("Unknown error when trying to send usage data")