def handler()

in aws_emr_launch/lambda_sources/emr_utilities/update_cluster_tags/lambda_source.py [0:0]


def handler(event: Dict[str, Any], context: Optional[Dict[str, Any]]) -> Any:
    logger.info(f"Lambda metadata: {json.dumps(event)} (type = {type(event)})")
    new_tags = event.get("ExecutionInput", {}).get("Tags", [])
    cluster_config = event.get("Input", {})
    current_tags = cluster_config.get("Tags", [])

    try:
        new_tags_dict = {tag["Key"]: tag["Value"] for tag in new_tags}
        current_tags_dict = {tag["Key"]: tag["Value"] for tag in current_tags}

        merged_tags_dict = dict(current_tags_dict, **new_tags_dict)
        merged_tags = [{"Key": k, "Value": v} for k, v in merged_tags_dict.items()]

        cluster_config["Tags"] = merged_tags
        return cluster_config

    except Exception as e:
        logger.error(f"Error processing event {json.dumps(event)}")
        logger.exception(e)
        raise e