如何使用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
相关产品推荐
相关产品推荐

