You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Azure资源设置过期日期并发送停用提醒邮件

解决方案:Azure资源过期提醒与自动清理

一、通用方案(覆盖Terraform/手动创建的资源)

1. 给资源添加ExpirationDate标签

无论通过Terraform还是手动创建,给目标资源(VM、应用网关等)添加格式为YYYY-MM-DD的ExpirationDate标签:

  • Terraform配置示例(VM资源):
resource "azurerm_virtual_machine" "test_vm" {
  # 其他VM配置项...
  tags = {
    ExpirationDate = "2024-12-31"
    Environment    = "Test"
  }
}
  • 手动创建资源:在Azure门户进入资源详情页,切换到「标签」栏目直接添加键值对。

2. 创建Azure Monitor警报实现到期提醒

通过日志查询筛选即将过期的资源,再配置邮件通知:

  • 编写Kusto查询语句(示例:提前3天触发提醒):
Resources
| where tags.ExpirationDate != ""
| parse tags.ExpirationDate with ExpirationDate:datetime
| where ExpirationDate <= now() + 3d
| project ResourceId, ResourceName, ResourceType, ExpirationDate
  • 基于该查询创建警报规则:设置触发条件为「查询结果数大于0」,通知方式选择「电子邮件/SMS/推送/语音」,添加需要接收提醒的邮箱地址。

3. (可选)自动化删除过期资源

配合Azure自动化账户的PowerShell Runbook,实现到期自动清理:

  • Runbook脚本示例:
# 以托管身份连接Azure
Connect-AzAccount -Identity

# 获取已过期的资源
$expiredResources = Get-AzResource | Where-Object {
    $_.Tags.ExpirationDate -ne $null -and
    [datetime]$_.Tags.ExpirationDate -le (Get-Date)
}

# 遍历删除资源
foreach ($resource in $expiredResources) {
    Write-Output "Deleting expired resource: $($resource.Name)"
    Remove-AzResource -ResourceId $resource.ResourceId -Force
}
  • 给Runbook设置每日执行的计划触发器,同时可在警报规则中关联该Runbook,实现「提醒+自动清理」的闭环。

二、Terraform专属简化方案

在Terraform代码中直接集成标签逻辑,确保所有通过代码创建的测试资源都带有ExpirationDate标签,后续复用上述Monitor+自动化流程即可,无需额外配置。

三、资源组级批量管理(适合测试环境)

若测试资源集中在单个资源组,可直接给资源组添加ExpirationDate标签,通过相同的Monitor查询逻辑识别过期资源组,到期后直接删除整个资源组,比单独清理资源更高效。


内容的提问来源于stack exchange,提问作者Amrit Jha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 07:52:12