You need to enable JavaScript to run this app. 如何使用Node.js Azure SDK通过Azure VM镜像创建新VM实例
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Node.js Azure SDK通过Azure VM镜像创建新VM实例

Azure Node.js SDK 自定义镜像创建及VM部署入门示例

Azure中与AWS AMI对等的资源是自定义托管镜像,以下是完整的操作步骤和可运行的Node.js代码示例,适配新手使用。

前置依赖

  • 安装所需SDK包:
npm install @azure/arm-compute @azure/arm-resources @azure/identity
  • 提前准备好Azure订阅ID、资源组名称、VM所在区域等基础配置参数。你之前找到的resourceClient.resourceGroups.createOrUpdate(resourceGroupName, groupParameters, callback)是资源组创建接口,所有资源都需要放在指定资源组下,可先调用该接口完成资源组初始化。

步骤1:从现有VM制作自定义托管镜像(对应制作AWS AMI的操作)

如果已经有镜像ID可直接跳过本步骤。代码示例如下:

const { ComputeManagementClient } = require("@azure/arm-compute");
const { DefaultAzureCredential } = require("@azure/identity");

// 配置参数
const subscriptionId = "你的Azure订阅ID";
const resourceGroupName = "你的资源组名称";
const location = "chinanorth3"; // 对应你要部署的区域
const sourceVmName = "要制作镜像的源VM名称";
const imageName = "自定义镜像的名称";

const credential = new DefaultAzureCredential();
const computeClient = new ComputeManagementClient(credential, subscriptionId);

async function createCustomImage() {
  // 先获取源VM的属性
  const vm = await computeClient.virtualMachines.get(resourceGroupName, sourceVmName);
  
  // 构造镜像参数
  const imageParameters = {
    location: location,
    sourceVirtualMachine: {
      id: vm.id
    },
    hyperVGeneration: "V2" // 和源VM的Hyper-V世代保持一致即可
  };

  // 调用创建镜像接口
  const result = await computeClient.images.beginCreateOrUpdateAndWait(
    resourceGroupName,
    imageName,
    imageParameters
  );
  console.log("镜像创建完成,镜像ID为:", result.id);
  return result.id;
}

createCustomImage();

步骤2:通过镜像ID创建VM(对应使用AMI ID启动EC2的操作)

拿到镜像ID之后,用以下代码创建VM:

const { ComputeManagementClient } = require("@azure/arm-compute");
const { DefaultAzureCredential } = require("@azure/identity");

// 配置参数
const subscriptionId = "你的Azure订阅ID";
const resourceGroupName = "你的资源组名称";
const location = "chinanorth3";
const imageId = "你已经拿到的自定义镜像ID"; // 就是上一步输出的result.id
const vmName = "要创建的VM名称";
const adminUsername = "VM管理员账号";
const adminPassword = "VM管理员密码(符合复杂度要求)";
const vmSize = "Standard_D2s_v3"; // VM规格,可根据需求调整

const credential = new DefaultAzureCredential();
const computeClient = new ComputeManagementClient(credential, subscriptionId);

async function createVmFromImage() {
  // 构造VM参数
  const vmParameters = {
    location: location,
    hardwareProfile: {
      vmSize: vmSize
    },
    storageProfile: {
      imageReference: {
        id: imageId // 这里指定自定义镜像ID,和AWS中指定AMI ID逻辑完全一致
      },
      osDisk: {
        createOption: "FromImage",
        managedDisk: {
          storageAccountType: "Premium_LRS"
        },
        name: `${vmName}-osdisk`
      }
    },
    osProfile: {
      computerName: vmName,
      adminUsername: adminUsername,
      adminPassword: adminPassword
    },
    networkProfile: {
      networkInterfaces: [
        {
          id: "你的已有网卡ID", // 如果还没有网卡,可先调用网络相关接口创建网卡再填入此处
          primary: true
        }
      ]
    }
  };

  // 调用VM创建接口
  const result = await computeClient.virtualMachines.beginCreateOrUpdateAndWait(
    resourceGroupName,
    vmName,
    vmParameters
  );
  console.log("VM创建完成,VM ID为:", result.id);
}

createVmFromImage();

新手使用时建议先替换所有中文标注的参数为你自己的实际配置,运行前可先通过Azure CLI执行az login完成本地身份认证,DefaultAzureCredential会自动读取本地登录的凭证,不需要额外配置密钥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 13:06:03