¿Cómo automatizar encendido y apagado de Azure Synapse?

Una de las preguntas más frecuentes en los clientes cuando estamos desarrollando un servicio de Data Warehouse en Azure es:

"Cómo podemos automatizar el encendido y apagado de nuestro Data Warehouse de Azure (hoy en días Azure Synapse) en los horarios que sabemos no tenemos tráfico de consultas para ahorrar dinero?"

Teniendo en cuenta que existen diversas formas de hacerlo, una de las maneras es a través del servicio Azure Automation, el cual nos permite automatizar tareas dentro del servicio de azure haciendo uso de Runbooks, que son libros que contienen la porción de código que deseamos ejecutar para automatizar un proceso. Existen cinco tipos dependiendo de la forma en que deseemos crear el libro, para efectos de este ejercicio, automatizaremos el encendido y apagado del Data Warehouse con un Runbook basado en PowerShell.

1 - Crear el recurso Automation Account (activando opción Azure run as account).
2 - Crear credenciales dentro del recurso creado. Esto tiene como objetivo autenticar el código que vamos a construir en power shell para poder ejecutar la tarea específica, es importante tener en cuenta que la cuenta que se asigna a la credencial debe tener permisos de co-administrador sobre la suscripción o administrador de los recursos.
3 - Importar los módulos necesarios para que el código se ejecute correctamente.
Az.Sql
Az.Accounts

4 - Crear runbook de tipo PowerShell.

5 - Editar runbook y ajustar el código que se describe a conitnuación y probarlo en la sección de testeo.
$credential = Get-AutomationPSCredential -Name 'CredencialCreada' $azureaccount = Connect-AzAccount -Credential $credential $database = Get-AzSqlDatabase -ResourceGroupName "NombreGrupodeRecursos" -ServerName "NombreServidor" -DatabaseName "nombreBasedeDatos" $resultDatabase = $database | Resume-AzSqlDatabase $resultDatabase $azureaccount

6 - Programar el horario en el cual se debe ejecutar el runbook.

7 - Para programar el apagado realizar el mismo proceso desde el paso 4 pero remplazando el código de PowerShell por el que se muestra a continuación.
$credential = Get-AutomationPSCredential -Name 'CredencialCreada' $azureaccount = Connect-AzAccount -Credential $credential $database = Get-AzSqlDatabase -ResourceGroupName "NombreGrupodeRecursos" -ServerName "NombreServidor" -DatabaseName "nombreBasedeDatos" $resultDatabase = $database | Suspend-AzSqlDatabase $resultDatabase $azureaccount

comments powered by Disqus