如何使用Azure Python SDK获取Azure资源创建时间并筛选30天以上资源?
如何通过Azure Python SDK获取创建时间超过30天的资源列表
当然可以!Azure Python SDK完全能够帮你获取资源的创建时间戳,进而筛选出超过30天的资源。下面是具体的实现步骤和代码示例:
1. 安装必要的Python包
你需要安装两个核心包:用于身份验证的azure-identity,以及用于资源管理的azure-mgmt-resource。如果要针对特定资源(比如VM)做更细致的操作,还可以安装对应资源的管理包(比如azure-mgmt-compute),不过通用的资源查询用前两个包就足够了。
执行安装命令:
pip install azure-identity azure-mgmt-resource
2. 编写核心代码
下面的脚本会完成:
- 通过Azure CLI的身份验证(你需要先在本地执行
az login完成登录) - 遍历订阅下的所有资源
- 提取每个资源的创建时间
- 筛选出创建时间超过30天的资源
from azure.identity import AzureCliCredential from azure.mgmt.resource import ResourceManagementClient from datetime import datetime, timedelta import pytz # 替换成你的订阅ID SUBSCRIPTION_ID = "your-subscription-id" def get_old_resources(): # 初始化身份验证与资源管理客户端 credential = AzureCliCredential() resource_client = ResourceManagementClient(credential, SUBSCRIPTION_ID) # 计算30天前的UTC时间点(Azure资源时间均为UTC时区) thirty_days_ago = datetime.now(pytz.utc) - timedelta(days=30) old_resources = [] # 遍历所有资源,可添加filter指定特定资源类型 for resource in resource_client.resources.list(): # 获取资源创建时间戳 created_time = resource.system_data.created_at if created_time < thirty_days_ago: old_resources.append({ "name": resource.name, "type": resource.type, "created_at": created_time.strftime("%Y-%m-%d %H:%M:%S UTC"), "resource_group": resource.resource_group }) return old_resources if __name__ == "__main__": resources = get_old_resources() print(f"找到 {len(resources)} 个创建时间超过30天的资源:") for res in resources: print(f"资源名称: {res['name']}, 类型: {res['type']}, 创建时间: {res['created_at']}, 资源组: {res['resource_group']}")
3. 针对特定资源类型的筛选
如果你只想查询VM这类特定资源,可以在list()方法中添加filter参数,比如只筛选虚拟机:
# 仅查询虚拟机资源 for resource in resource_client.resources.list(filter="resourceType eq 'Microsoft.Compute/virtualMachines'"): # 后续筛选逻辑保持不变
关键说明
- 时间时区:Azure返回的创建时间是UTC时区,所以在比较时要确保你的时间计算也基于UTC,避免时区偏差导致筛选错误。
- 权限要求:执行脚本的账号需要有订阅级别的
Reader权限,才能读取资源的属性信息。 - 通用性:不管是VM、存储账户还是App Service,所有Azure资源的
system_data.created_at字段都记录了创建时间,这个方法适用于所有资源类型。
内容的提问来源于stack exchange,提问作者iamvishnuks
相关产品推荐
相关产品推荐

