寻求非工作时段启停Synapse的脚本以降低运维成本
Synapse非工作时段自动启停解决方案
针对非工作时段(晚间、周末)启停Synapse计算资源以降低成本的需求,你可以借助Azure Automation Runbook实现自动化调度,以下是具体脚本和配置步骤:
一、核心脚本(PowerShell)
1. 停止Synapse计算资源脚本
用于晚间/周末暂停专用SQL池、Spark池等付费计算资源:
# 配置参数,替换为你的资源信息 $resourceGroupName = "你的资源组名称" $synapseWorkspaceName = "你的Synapse工作区名称" $sqlPoolName = "你的专用SQL池名称" $sparkPoolName = "你的Spark池名称" # 使用Automation托管身份连接Azure Connect-AzAccount -Identity # 暂停专用SQL池 Suspend-AzSynapseSqlPool -ResourceGroupName $resourceGroupName -WorkspaceName $synapseWorkspaceName -Name $sqlPoolName # 暂停Spark池(如有需要) Suspend-AzSynapseSparkPool -ResourceGroupName $resourceGroupName -WorkspaceName $synapseWorkspaceName -Name $sparkPoolName
2. 启动Synapse计算资源脚本
用于工作日早间恢复计算资源:
# 配置参数,替换为你的资源信息 $resourceGroupName = "你的资源组名称" $synapseWorkspaceName = "你的Synapse工作区名称" $sqlPoolName = "你的专用SQL池名称" $sparkPoolName = "你的Spark池名称" # 使用Automation托管身份连接Azure Connect-AzAccount -Identity # 恢复专用SQL池 Resume-AzSynapseSqlPool -ResourceGroupName $resourceGroupName -WorkspaceName $synapseWorkspaceName -Name $sqlPoolName # 恢复Spark池(如有需要) Resume-AzSynapseSparkPool -ResourceGroupName $resourceGroupName -WorkspaceName $synapseWorkspaceName -Name $sparkPoolName
二、配置自动化调度步骤
- 创建Azure Automation账户:在Azure门户中创建Automation账户,启用系统托管身份。
- 导入依赖模块:在Automation账户的「模块」页面,导入
Az.Synapse及Az.Accounts模块(确保模块版本兼容)。 - 创建Runbook:分别创建两个PowerShell类型的Runbook,将上述停止/启动脚本粘贴进去,替换参数后发布。
- 设置定时触发器:
- 停止触发器:设置为工作日20:00执行,同时添加周末全天的重复触发规则。
- 启动触发器:设置为工作日08:00执行。
- 分配权限:给Automation账户的托管身份分配「Synapse Contributor」角色到Synapse工作区或所属资源组,确保具备启停资源的权限。
三、注意事项
- 若有多个计算资源,需在脚本中逐一添加对应的启停命令。
- 先手动运行Runbook验证资源启停正常,再启用定时触发器。
- 可结合Synapse无服务器SQL池的自动暂停功能,进一步优化成本。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

