Azure虚拟机:能否通过Python/Go编程实现启停及获取API参考?
Azure SDK实现虚拟机启停(Python/Go)
完全可以通过Azure SDK的API实现虚拟机的启停操作,以下是具体实现方式及参考位置:
Python 实现
使用azure-mgmt-compute包即可完成操作,核心是ComputeManagementClient类中的对应方法:
- 启动VM:调用
virtual_machines.begin_start(resource_group_name, vm_name) - 停止VM(释放资源):调用
virtual_machines.begin_deallocate(resource_group_name, vm_name);若仅关机不释放资源,用begin_power_off
简单代码示例:
from azure.identity import DefaultAzureCredential from azure.mgmt.compute import ComputeManagementClient # 初始化客户端 subscription_id = "你的订阅ID" credential = DefaultAzureCredential() compute_client = ComputeManagementClient(credential, subscription_id) # 启动虚拟机 def start_vm(resource_group, vm_name): poller = compute_client.virtual_machines.begin_start(resource_group, vm_name) result = poller.result() print(f"VM {vm_name} 启动完成") # 停止虚拟机(释放资源) def stop_vm(resource_group, vm_name): poller = compute_client.virtual_machines.begin_deallocate(resource_group, vm_name) result = poller.result() print(f"VM {vm_name} 停止并释放资源完成")
参考资料位置:Azure Python SDK官方文档中azure-mgmt-compute模块的VirtualMachinesOperations类章节,里面详细列出了所有VM操作方法及参数说明。
Go 实现
使用Azure Go SDK的armcompute模块,通过VirtualMachinesClient类的对应方法实现:
- 启动VM:调用
Start(ctx, resourceGroup, vmName, nil) - 停止VM(释放资源):调用
Deallocate(ctx, resourceGroup, vmName, nil);仅关机用PowerOff
简单代码示例:
import ( "context" "fmt" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute" ) func main() { subscriptionID := "你的订阅ID" credential, err := azidentity.NewDefaultAzureCredential(nil) if err != nil { fmt.Printf("获取凭证失败: %v\n", err) return } client, err := armcompute.NewVirtualMachinesClient(subscriptionID, credential, nil) if err != nil { fmt.Printf("创建客户端失败: %v\n", err) return } // 启动VM ctx := context.Background() resourceGroup := "你的资源组名" vmName := "你的VM名" poller, err := client.Start(ctx, resourceGroup, vmName, nil) if err != nil { fmt.Printf("启动VM失败: %v\n", err) return } _, err = poller.PollUntilDone(ctx, nil) if err != nil { fmt.Printf("等待启动完成失败: %v\n", err) return } fmt.Printf("VM %s 启动完成\n", vmName) // 停止VM(释放资源) poller, err = client.Deallocate(ctx, resourceGroup, vmName, nil) if err != nil { fmt.Printf("停止VM失败: %v\n", err) return } _, err = poller.PollUntilDone(ctx, nil) if err != nil { fmt.Printf("等待停止完成失败: %v\n", err) return } fmt.Printf("VM %s 停止并释放资源完成\n", vmName) }
参考资料位置:Azure Go SDK官方文档中armcompute包的VirtualMachinesClient结构体章节,里面包含所有VM生命周期操作的方法定义及使用说明。
内容的提问来源于stack exchange,提问作者Micheal J. Roberts
相关产品推荐
相关产品推荐

