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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 11:30:21