Etiquetado de recursos de socios de Azure a través del encabezado User-Agent

8

Estoy tratando de implementar el etiquetado de socios de los recursos de Azure agregando un GUID del producto asociado al encabezado User-Agent al crear recursos a través de la API de Resource Manager , pero no tiene ningún efecto visible. Verifiqué la plantilla ARM de un recurso "etiquetado", pero el GUID no está allí. El método de verificación descrito en el artículo también da resultados negativos.

¿Funciona para alguien?

Aquí está el código de Powershell basado en la guía anterior que reproduce el problema:

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.

Nota: el GUID anterior es aleatorio, no real. Debe reemplazarse con un GUID de socio registrado.

Ruslan Mukhamedov
fuente

Respuestas:

2

Al etiquetar los recursos para la atribución durante la implementación, no hay nada visible en el recurso que indique la asociación, es una implementación interna.

Si su objetivo es verificar que el código que ha escrito funciona correctamente (de modo que el recurso se atribuirá correctamente), actualmente no hay forma de hacerlo externamente para el método UserAgent; solo podemos hacerlo internamente. Puede verificar una implementación de plantilla utilizando el script en el documento al que se vinculó, pero eso solo funcionará para implementaciones de plantilla, no para llamadas de API (TF, SDK, etc.).

No verá nada en el Portal de socios a menos que 1) el GUID esté registrado y 2) haya un uso facturable para el recurso.

Dicho todo esto, eché un vistazo rápido a los registros y veo algunos recursos provistos con 3fd1a53d-3ef0-4111-8a66-211ed6470935 en el userAgent.

¿Que ayuda?

bmoore-msft
fuente
0

Este no es un ejemplo de trabajo y no cabe en los comentarios.

La línea Get-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -Name $partnerIDintenta buscar una implementación con nombre como $partnerIDen el grupo de recursos, pero New-AzVM podría estar usando un nombre como virtualmachine-<some_random_id>. Para usar el comando como lo está intentando, la implementación debe tener el mismo nombre. Este nombre se puede dar en la plantilla ARM o mediante el comando New-AzResourceGroupDeployment .

No sé mucho sobre el etiquetado de socios, pero el comando normalmente no funciona como si estuviera tratando de usarlo.

Además, si su $productIDvalor se mantiene igual para implementaciones múltiples, pero usar el mismo nombre para implementaciones sobrescribirá las implementaciones anteriores (básicamente, pierde el historial de implementación solamente). Sugiero verificar el grupo de recursos en el portal y obtener el nombre de implementación, o usar Get-AzResourceGroupDeployment sin Nameparámetro para obtener todas las implementaciones y encontrar la implementación relacionada según el momento de la implementación.

También quisiera señalar que parece que está utilizando el proceso API de Resource Manager, pero la documentación indica lo siguiente para el método de verificación:

Puede usar el script para verificar que el GUID se haya agregado correctamente a su plantilla de Resource Manager. El script no se aplica a las implementaciones de la API de Resource Manager o Terraform.

Es posible que su código esté funcionando, pero no veo un método de verificación claro durante el uso del método User-Agent. (¿Probablemente verifique los informes en el panel Analizar del Centro de socios según la documentación?). Dado que las plantillas ARM parecen tener un método de verificación, puede intentar usarlo.

stackoverflowusrone
fuente
El método con el agente de usuario se sugiere en el artículo: Etiquetar una implementación mediante Azure PowerShell. Si implementa recursos mediante Azure PowerShell, agregue su GUID mediante el siguiente método: Copia de PowerShell [Microsoft.Azure.Common.Authentication.AzureSession]: : ClientFactory.AddUserAgent ("pid-eb7927c8-dd66-43e1-b0cf-c346a422063
Ruslan Mukhamedov
Sí, lo vi, pero no veo un método de verificación claro cuando utilizo el método de Agente de usuario mencionado en la documentación. Si ya conoce un método de verificación, le sugiero que lo use. Se Get-AzResourceGroupDeploymentespera que el comando como ha escrito en el código falle, ya que está intentando obtener una implementación con nombre como su productIDsin crearlo primero.
stackoverflowusrone
Intente verificar su informe como se menciona en el mismo artículo y vea si los resultados previstos están presentes. Docs.microsoft.com/en-us/azure/marketplace/…
stackoverflowusrone