Azure虚拟机自动启停高性价比方案咨询(月成本≤5美元)
Azure虚拟机自动启停低成本最佳实践
针对你的需求(替代手动CLI命令启动VM、月成本≤5美元、避免Defender for Cloud额外收费),以下是几个实用方案:
方案1:利用现有廉价VM的定时任务(0额外成本)
因为你已经有一台持续运行的廉价VM(视为免费),直接在这台VM上配置定时任务是最省钱的方式:
Linux VM 配置步骤:
- 确保VM上已安装Azure CLI,若未安装可执行:
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash - 创建服务主体用于无交互认证(避免手动登录过期):
记录输出的az ad sp create-for-rbac --name vm-start-sp --role "Virtual Machine Contributor" --scopes /subscriptions/<你的订阅ID>/resourceGroups/fooappId(AZURE_CLIENT_ID)、password(AZURE_CLIENT_SECRET)、tenant(AZURE_TENANT_ID)。 - 在VM上设置环境变量(可写入
~/.bashrc或/etc/profile持久化):export AZURE_CLIENT_ID="你的appId" export AZURE_CLIENT_SECRET="你的password" export AZURE_TENANT_ID="你的tenant" - 编辑crontab添加定时任务,比如每天早上8点启动VM:
添加一行:crontab -e0 8 * * * /usr/bin/az vm start -g foo -n bar >> /var/log/vm-start.log 2>&1
Windows VM 配置步骤:
- 安装Azure CLI,下载对应安装包完成部署。
- 同样创建服务主体,记录认证信息。
- 创建PowerShell脚本
Start-VM.ps1:$env:AZURE_CLIENT_ID = "你的appId" $env:AZURE_CLIENT_SECRET = "你的password" $env:AZURE_TENANT_ID = "你的tenant" az vm start -g foo -n bar - 打开「任务计划程序」,创建基本任务:
- 设置触发时间(如每天8点)
- 操作选择「启动程序」,程序/脚本选
powershell.exe,参数填-ExecutionPolicy Bypass -File "C:\路径\Start-VM.ps1"
方案2:Azure Logic Apps(消耗计划,几乎0成本)
Logic Apps消耗计划按执行次数收费,每月前1000次执行免费,完全覆盖你的需求:
- 登录Azure门户,创建「逻辑应用(消耗)」。
- 添加「定时触发器」,设置启动VM的时间规则(如每天8点)。
- 添加「Azure 虚拟机 - 启动虚拟机」操作,选择订阅、资源组
foo和VMbar。 - 配置权限:逻辑应用会自动创建服务主体,确保其拥有
Virtual Machine Contributor权限(若权限不足,可手动在资源组IAM中添加)。 - 成本说明:即使每天执行2次,每月仅60次,远在免费额度内;若超出,每次执行仅0.00016美元,月成本不会超过5美元。
方案3:Azure Automation Runbook(免费层足够)
Azure Automation提供免费层(每月500分钟作业运行时间),完全满足定时启动VM的需求,关键是创建时要关闭Defender:
- 创建Automation账户时,取消勾选「启用Microsoft Defender for Cloud」,避免额外收费。
- 在Automation账户中导入
Az.Compute模块(用于VM操作)。 - 创建PowerShell Runbook,内容如下:
Connect-AzAccount -Identity # 使用Automation账户的托管身份认证 Start-AzVM -ResourceGroupName "foo" -Name "bar" - 给Automation账户的托管身份添加
Virtual Machine Contributor权限到资源组foo。 - 创建计划,设置定时触发Runbook(如每天8点)。
- 成本说明:免费层500分钟/月足够用,即使超出,每分钟仅0.002美元,月成本远低于5美元。
方案对比
| 方案 | 成本 | 优点 | 缺点 |
|---|---|---|---|
| 现有VM定时任务 | 0额外成本 | 操作简单,无需额外资源 | 依赖廉价VM的可用性 |
| Logic Apps(消耗) | 几乎0成本 | 可视化配置,无需维护VM | 功能相对单一 |
| Automation Runbook | 免费层足够 | 功能丰富,可扩展自动化 | 需手动关闭Defender配置 |
注意事项
- 所有方案使用的身份(服务主体/托管身份)仅需
Virtual Machine Contributor权限,遵循最小权限原则。 - 定期测试自动化任务,确保VM能正常启动。
- 对于Logic Apps和Automation,可在Azure成本管理中监控使用情况,避免意外收费。
内容的提问来源于stack exchange,提问作者gotShwifty
相关产品推荐
相关产品推荐

