通过 Azure RM REST 创建 VM 时 ResourcePurchaseValidationFailed API

ResourcePurchaseValidationFailed when creating a VM via Azure RM REST API

您好,我正在尝试使用 Azure RM REST API 创建虚拟机,但出现以下错误代码

"error": {
    "code": "ResourcePurchaseValidationFailed",
    "message": "User failed validation to purchase resources. Error message: 'Offer with PublisherId: Microsoft and OfferId: Windows Server 2008 R2 SP1 not found in Azure Data Market. If this offer has been created recently, please allow upto 30 minutes for this offer to be available for Purchase.'"
  }
}

有没有人遇到过这样的问题?

据我了解,它与 Azure 数据市场中的 PublisherId 和 OfferId 相关。 请帮助我如何从 Azure 数据市场为我的订阅获取此 PublisherId 和 OfferId。

如果您在请求中包含计划信息,则可能会发生这种情况。通过添加它,它迫使系统购买不存在的东西。 这可以通过使用以下 powershell 命令来验证:

$pubName = 'MicrosoftWindowsServer'
$offerName = 'WindowsServer'
$skuName = '2016-Datacenter'
$version = '2016.127.20180315'


Get-AzureRMVMImage -Location westeurope -Publisher $pubName -Offer $offerName -Skus $skuName -Version $version

如您所见,输出显示 PurchasePlan 不需要计划信息 属性:

Id               : /Subscriptions/5e747971-92b4-41ac-963a-188c55951695/Providers/Microsoft.Compute/Locations/westeurope/Publishers/MicrosoftWindowsServer/ArtifactTypes/V
                   MImage/Offers/WindowsServer/Skus/2016-Datacenter/Versions/2016.127.20180315
Location         : westeurope
PublisherName    : MicrosoftWindowsServer
Offer            : WindowsServer
Skus             : 2016-Datacenter
Version          : 2016.127.20180315
FilterExpression :
Name             : 2016.127.20180315
OSDiskImage      : {
                     "operatingSystem": "Windows"
                   }
PurchasePlan     : null
DataDiskImages   : []

如果您试图让该脚本部署可能需要也可能不需要类似 PurchasePlan 的 VM,您可以在脚本中使用以下方法:

  1. 获取镜像的最新版本号:

    $AzureImageSku = Get-AzureRmVMImage -Location westeurope -PublisherName "MicrosoftWindowsServer" ` -Offer "WindowsServer" -Skus "2016-Datacenter" $AzureImageSku = $AzureImageSku | Sort-Object Version -Descending #把最新的放在最前面 $AzureImageSku[0] #Newest2016-Datacenter

  2. 使用 Get-AzureRmImage cmdlet

  3. 检查是否需要计划
  4. 仅当需要计划时,使用此处详述的方法设置计划信息:https://docs.microsoft.com/en-us/azure/virtual-machines/windows/cli-ps-findimage#deploy-an-image-with-marketplace-terms