8

我正在尝试通过在通过Resource Manager API创建资源时将合作伙伴产品 GUID 添加到 User-Agent 标头来实现Azure 资源的合作伙伴标记,但它没有任何可见的效果。我检查了“标记”资源的 ARM 模板,但 GUID 不存在。文章中描述的验证方法也给出了否定的结果。

它对任何人都有效吗?

这是基于上述指南的 Powershell 代码,它重现了该问题:

Install-Module -Name Az -AllowClobber -Scope CurrentUser # installs Azure Powerhsell module
$partnerID = "pid-3fd1a53d-3ef0-4111-8a66-211ed6470935" # Product GUID
$VMLocalAdminUser = "partneridtest" # test VM username
$VMLocalAdminSecurePassword = ConvertTo-SecureString "Pa$$word123" -AsPlainText -Force # test VM password
$resourceGroupName=[guid]::NewGuid().ToString() # randomly generated resource group name
Import-Module -Name Az # import Azure Powerhsell module
[Microsoft.Azure.Common.Authentication.AzureSession]::ClientFactory.AddUserAgent($partnerID) # add user-agent for partner tracking

Connect-AzAccount # login to Azure

New-AzResourceGroup -Name $resourceGroupName -Location eastus # create a resource group
Write-Host Resource group name $resourceGroupName

$vmParams = @{
  ResourceGroupName = $resourceGroupName
  Name = 'PartnerIdTest1'
  Location = 'eastus'
  ImageName = 'Win2016Datacenter'
  PublicIpAddressName = 'partnerIdTestPublicIp'
  Credential = New-Object System.Management.Automation.PSCredential ($VMLocalAdminUser, $VMLocalAdminSecurePassword)
  OpenPorts = 3389
}
$newVM1 = New-AzVM @vmParams # create a test VM (should be tagged with the partner product guid)

Get-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -Name $partnerID # fails with Get-AzResourceGroupDeployment : Deployment 'pid-3fd1a53d-3ef0-4111-8a66-211ed6470935' could not be found.

注意:上面的 GUID 是随机的 - 不是真实的。应将其替换为已注册的合作伙伴 GUID。

4

2 回答 2

3

在部署期间标记资源以进行归属时,资源本身没有任何可见的指示关联,它是一个内部实现。

如果您的目标是验证您编写的代码是否正常工作(以便正确分配资源),则目前无法在外部为 UserAgent 方法执行此操作 - 我们只能在内部执行此操作。您可以使用链接到的文档中的脚本验证模板部署,但这仅适用于模板部署,而不适用于 API 调用(TF、SDK 等)。

您不会在合作伙伴门户中看到任何内容,除非 1) GUID 已注册并且 2) 资源有可计费的使用量。

说了这么多——我快速浏览了日志,确实看到一些资源在 userAgent 中配置了 3fd1a53d-3ef0-4111-8a66-211ed6470935。

这种帮助?

于 2020-02-28T22:22:32.293 回答
0

这不是一个工作示例,不适合评论。

该行Get-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -Name $partnerID尝试搜索名称为$partnerID资源组中的部署,但New-AzVM 可能使用的名称如virtualmachine-<some_random_id>. 要像您尝试的那样使用命令,部署必须具有相同的名称。此名称可以在 ARM 模板中或使用New-AzResourceGroupDeployment命令给出。

我对合作伙伴标记知之甚少,但该命令通常不会像您尝试使用它一样工作。

此外,如果您的$productID值在多个部署中保持不变,但对部署使用相同的名称将覆盖以前的部署(基本上您只会丢失部署历史记录)。我建议检查门户中的资源组并获取部署名称,或者使用不带参数的Get-AzResourceGroupDeploymentName获取所有部署并根据部署时间查找相关部署。

我还要指出,您似乎正在使用资源管理器 API 流程,但文档说明以下验证方法 -

您可以使用该脚本来验证 GUID 是否已成功添加到您的资源管理器模板。该脚本不适用于资源管理器 API 或 Terraform 部署。

您的代码可能正在运行,但在使用 User-Agent 方法时我没有看到明确的验证方法。(可能根据文档检查合作伙伴中心分析仪表板中的报告?)。 由于ARM模板似乎有一个验证方法,你可以尝试使用它。

于 2020-02-26T10:49:12.100 回答