Skip to main content

Command Palette

Search for a command to run...

Cómo recuperar Workspaces eliminados en Microsoft Fabric

Updated
4 min read
Cómo recuperar Workspaces eliminados en Microsoft Fabric

¿Alguna vez has eliminado accidentalmente un workspace en Microsoft Fabric y has sentido ese momento de pánico? No te preocupes, Microsoft ha incorporado una API de administración que te permite restaurar workspaces eliminados. En este artículo te mostraré cómo hacerlo usando un notebook de PySpark directamente en Fabric.

¿Por qué es importante esta funcionalidad?

Los workspaces en Microsoft Fabric son contenedores cruciales que almacenan todos tus artefactos: lakehouse, notebooks, pipelines, datasets y más. Una eliminación accidental puede significar la pérdida de horas o días de trabajo. Afortunadamente, Microsoft Fabric ofrece una API administrativa que permite recuperar estos workspaces antes de que se eliminen permanentemente.

Requisitos previos

Antes de comenzar, asegúrate de cumplir con estos requisitos:

  • Permisos de Fabric Administrator: Esta operación requiere privilegios administrativos a nivel de tenant

  • Alcance delegado: Tenant.ReadWrite.All

  • Un workspace eliminado: Necesitas el ID (UUID) del workspace que deseas recuperar

  • ID del nuevo administrador: Usuario o service principal que será el admin del workspace restaurado

Importante: La API tiene un límite de 10 peticiones por minuto, así que planifica tus operaciones en consecuencia.

La API de Restauración

Microsoft Fabric expone un endpoint REST específico para esta tarea:

POST https://api.fabric.microsoft.com/v1/admin/workspaces/{workspaceId}/restore

Esta API acepta dos parámetros principales:

  1. newWorkspaceName: El nombre que tendrá el workspace restaurado (obligatorio para "My workspace")

  2. newWorkspaceAdminPrincipal: El principal que será administrador del workspace restaurado

El principal puede ser de varios tipos:

  • User: Un usuario de Microsoft Entra

  • ServicePrincipal: Un service principal de Microsoft Entra

  • Group: Un grupo de seguridad

Implementación con PySpark

Configuración de parámetros

Define los parámetros necesarios para la restauración:

WORKSPACE_ID = "000xxx-xxxx-xxxx-xxxx-xxx000"
NEW_WORKSPACE_NAME = "Workspace Restored"
NEW_ADMIN_ID = "000xxx-xxxx-xxxx-xxxx-xxx000"
PRINCIPAL_TYPE = "User"

Nota importante: El NEW_ADMIN_ID es el Object ID del usuario o service principal, que puedes encontrar en Azure Portal:

  • Para usuarios: Azure Active Directory > Users > [seleccionar usuario] > Object ID

  • Para service principals: Azure Active Directory > Enterprise applications > [seleccionar aplicación] > Object ID

Listar Workspaces eliminados

Antes de restaurar, puede ser útil obtener una lista de todos los workspaces eliminados disponibles. Aquí te muestro cómo hacerlo:

def list_deleted_workspaces():
    """
    Lista los workspaces eliminados disponibles para restauración
    """

    url = "https://api.fabric.microsoft.com/v1/admin/workspaces"
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json"
    }

    # Filtrar workspaces eliminados
    params = {
        "state": "Deleted"
    }

    try:
        response = requests.get(url, headers=headers, params=params)
        if response.status_code == 200:
            workspaces = response.json()
            print(f"Se encontraron {len(workspaces.get('value', []))} workspaces eliminados:")
            for ws in workspaces.get('value', []):
                print(f"  - {ws.get('displayName')} (ID: {ws.get('id')})")
            return workspaces
        else:
            print(f"Error al listar workspaces: {response.status_code}")
            return None
    except Exception as e:
        print(f"Excepción: {e}")
        return None

Esta función te permite:

  • Ver todos los workspaces que pueden ser restaurados

  • Obtener los IDs necesarios para la restauración

  • Verificar el nombre original del workspace antes de restaurarlo

Es especialmente útil cuando no recuerdas el ID exacto del workspace que necesitas recuperar.

Llamada a la API

import requests

WORKSPACE_ID = "000xxx-xxxx-xxxx-xxxx-xxx000"
NEW_WORKSPACE_NAME = "Workspace Restored"
NEW_ADMIN_ID = "000xxx-xxxx-xxxx-xxxx-xxx000"
PRINCIPAL_TYPE = "User"

url = f"https://api.fabric.microsoft.com/v1/admin/workspaces/{WORKSPACE_ID}/restore"

headers = {
    "Authorization": f"Bearer {token}",
    "Content-Type": "application/json"
}

body = {
    "newWorkspaceName": NEW_WORKSPACE_NAME,
    "newWorkspaceAdminPrincipal": {
        "id": NEW_ADMIN_ID,
        "type": PRINCIPAL_TYPE
    }
}

response = requests.post(url, headers=headers, json=body)

Importante: La restauración del workspace no solo recupera el contenedor, sino también todos los artefactos que contenía en el momento de su eliminación (notebooks, lakehouses, pipelines, datasets, etc.). El usuario o service principal especificado en newWorkspaceAdminPrincipal se convertirá automáticamente en el administrador del workspace restaurado, con permisos completos sobre él y todos sus artefactos.

Solución completa

He preparado un notebook completo que encapsula toda esta funcionalidad en funciones reutilizables. El código incluye:

  • Autenticación automática con manejo de errores

  • Función list_deleted_workspaces() para listar workspaces disponibles para restauración

  • Función restore_workspace() parametrizable y reutilizable

  • Validación de respuestas con mensajes descriptivos

  • Logging detallado para depuración

  • Documentación inline con todos los detalles importantes

El flujo de trabajo típico sería:

  1. Ejecutar list_deleted_workspaces() para ver qué workspaces están disponibles

  2. Identificar el workspace que necesitas restaurar

  3. Copiar su ID y ejecutar restore_workspace() con los parámetros apropiados

Puedes encontrar el código completo en mi GitHub: notebook

Casos de Uso Prácticos

Esta solución es especialmente útil en varios escenarios:

  1. Recuperación de emergencia: Restaurar workspaces eliminados accidentalmente por error humano

  2. Automatización: Integrar en pipelines de governance que detecten y restauren workspaces críticos

  3. Migraciones: Crear scripts de recuperación masiva durante reorganizaciones de tenant

  4. Testing: Eliminar y restaurar workspaces en entornos de desarrollo de forma programática

Limitaciones y Consideraciones

Ten en cuenta estas limitaciones de la API:

  • Estado de preview: Esta API está en preview y puede cambiar

  • Rate limiting: Máximo 10 peticiones por minuto

  • Ventana de recuperación: Los workspaces eliminados solo están disponibles durante un período limitado

  • Permisos requeridos: Solo usuarios con rol de Fabric Administrator pueden ejecutar esta operación

Recursos adicionales