À partir d'un groupe de ressources avec une balise définie nommée tag1
(je l'ai fait via le portail), j'ai le modèle de déploiement suivant dans Visual Studio :
{
"name": "appsettings",
"type": "config",
"apiVersion": "2015-08-01",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', variables('websiteName'))]"
],
"tags": {
"displayName": "website AppSettings"
},
"properties": {
"Setting1": "[resourceGroup().tags.tag1]",
"Setting2": "[parameters('param2')]"
}
}
Je reçois cette erreur :
... 'La propriété d'expression de langage 'tags' n'existe pas, les propriétés disponibles sont 'id, name, location, properties'...
Mais en utilisant https://resources.azure.com, je peux voir que le groupe de ressources a effectivement la propriété de tag
:
{
"id": "/subscriptions/{someguid}/resourceGroups/resourceGroup1",
"name": "resourceGroup1",
"location": "brazilsouth",
"tags": {
"tag1": "test"
},
"properties": {
"provisioningState": "Succeeded"
}
}
Y a-t-il un moyen d'obtenir les balises du groupe de ressources à l'intérieur du modèle de déploiement ?
Mise à jour
Comme l'a souligné @juvchan, les balises doivent exister sinon cette erreur se produit. J'ai créé la balise, mais lors du déploiement du modèle depuis Visual Studio, les balises sont supprimées, tandis que lors du déploiement depuis le portail, les balises sont conservées. Cela conduit à un problème et une question différente.
La raison en est que le projet Visual Studio a un script PowerShell avec cette ligne :
# Créer ou mettre à jour le groupe de ressources en utilisant le fichier de modèle spécifié et le fichier de paramètres de modèle
New-AzureRmResourceGroup -Name $ResourceGroupName -Location $ResourceGroupLocation -Verbose -Force -ErrorAction Stop
Mais la cmdlet New-AzureRmResourceGroup
ne conserve pas les balises existantes. Soyez conscient. Solution : modifier le script pour ne pas exécuter la cmdlet si le groupe de ressources existe déjà.