Azure中AWS Lambda等效服务及Python获取VM信息方案咨询
Azure中获取VM信息的Python方案(对应AWS Lambda+boto3场景)
对应服务与替代工具
- 替代AWS Lambda的无服务器服务:Azure Functions,支持Python运行时,可按需执行代码
- 替代boto3的Azure SDK:azure-mgmt-compute,这是Azure官方Python SDK中专门用于管理计算资源(含虚拟机)的模块
实现步骤
安装依赖包
在Python环境(或Azure Functions的requirements.txt)中添加以下依赖:azure-mgmt-compute>=29.0.0 azure-identity>=1.12.0执行安装命令:
pip install azure-mgmt-compute azure-identity配置权限
如果用Azure Functions运行代码,建议给函数的系统分配托管身份分配Reader或Virtual Machine Contributor角色(针对目标订阅或资源组),这样代码能安全访问VM数据,无需硬编码密钥。Python代码示例
以下是Azure Functions中HTTP触发的VM信息获取示例:from azure.identity import DefaultAzureCredential from azure.mgmt.compute import ComputeManagementClient import azure.functions as func def main(req: func.HttpRequest) -> func.HttpResponse: # 初始化认证客户端,自动使用托管身份(本地调试会调用Azure CLI认证) credential = DefaultAzureCredential() subscription_id = "你的Azure订阅ID" compute_client = ComputeManagementClient(credential, subscription_id) # 获取订阅下所有VM vm_list = compute_client.virtual_machines.list_all() vm_details = [] for vm in vm_list: # 提取关键信息,可按需扩展字段 vm_info = { "vm_name": vm.name, "resource_group": vm.id.split("/")[4], "location": vm.location, "vm_size": vm.hardware_profile.vm_size, "power_state": vm.instance_view.statuses[1].display_status if vm.instance_view else "未知" } vm_details.append(vm_info) return func.HttpResponse( f"VM信息:{str(vm_details)}", mimetype="application/json" )
额外说明
- 若只需获取特定资源组的VM,可替换为
compute_client.virtual_machines.list(resource_group_name="你的资源组名称") - 调用
compute_client.virtual_machines.get(resource_group_name="xxx", vm_name="xxx")可获取单个VM的完整详细信息(含磁盘、网络配置等) - 本地调试时,
DefaultAzureCredential会自动使用本地登录的Azure CLI账号认证,无需额外配置
内容的提问来源于stack exchange,提问作者Beginner
相关产品推荐
相关产品推荐

