Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird beschrieben, wie Python zum Kategorisieren von Ressourcen, Ressourcengruppen und Abonnements verwendet wird. Empfehlungen und Einschränkungen für Tags finden Sie unter Tags verwenden, um Ihre Azure-Ressourcen und Verwaltungshierarchie zu organisieren.
Voraussetzungen
Python 3.8 oder höher ist installiert. Um die neueste Version zu installieren, besuchen Sie Python.org
Die folgenden Azure-Bibliothekspakete für Python wurden in Ihrer virtuellen Umgebung installiert. Um eines der Pakete zu installieren, verwenden Sie
pip install {package-name}- Azure-Identity
- azure-mgmt-resource
Wenn Sie ältere Versionen dieser Pakete bereits in Ihrer virtuellen Umgebung installiert haben, müssen Sie diese möglicherweise mit
pip install --upgrade {package-name}aktualisieren.In den Beispielen in diesem Artikel wird die CLI-basierte Authentifizierung (
AzureCliCredential) verwendet. Je nach Ihrer Umgebung müssen Sie möglicherweise zuerstaz loginausführen, um sich zu authentifizieren.Eine Umgebungsvariable mit Ihrer Azure-Abonnement-ID. Um Ihre Azure-Abonnement-ID zu erhalten, verwenden Sie Folgendes:
az account show --name 'your subscription name' --query id -o tsvVerwenden Sie zum Festlegen des Werts die Option für Ihre Umgebung.
setx AZURE_SUBSCRIPTION_ID your-subscription-idHinweis
Wenn Sie nur in der aktuell ausgeführten Konsole auf die Umgebungsvariable zugreifen müssen, können Sie die Umgebungsvariable mit
setanstelle vonsetxfestlegen.Nachdem Sie die Umgebungsvariablen hinzugefügt haben, müssen Sie möglicherweise alle ausgeführten Programme neu starten, die die Umgebungsvariable lesen müssen, einschließlich des Konsolenfensters. Wenn Sie beispielsweise Visual Studio als Editor verwenden, müssen Sie Visual Studio neu starten, bevor Sie das Beispiel ausführen.
Tags anwenden
Azure Python bietet die ResourceManagementClient.tags.begin_create_or_update_at_scope Methode zum Anwenden von Tags. Es ersetzt alle Tags für die Ressource, die Ressourcengruppe oder das Abonnement. Wenn Sie den Befehl aufrufen, übergeben Sie die Ressourcen-ID der Entität, die Sie kategorisieren möchten.
Im folgenden Beispiel wird eine Reihe von Tags auf ein Speicherkonto angewendet:
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.resource.resources.models import TagsResource
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
resource_client = ResourceManagementClient(credential, subscription_id)
resource_group_name = "demoGroup"
storage_account_name = "demostore"
tags = {
"Dept": "Finance",
"Status": "Normal"
}
tag_resource = TagsResource(
properties={'tags': tags}
)
resource = resource_client.resources.get_by_id(
f"/subscriptions/{subscription_id}/resourceGroups/{resource_group_name}/providers/Microsoft.Storage/storageAccounts/{storage_account_name}",
"2022-09-01"
)
resource_client.tags.begin_create_or_update_at_scope(resource.id, tag_resource)
print(f"Tags {tag_resource.properties.tags} were added to resource with ID: {resource.id}")
Wenn Sie den Befehl erneut ausführen, aber diesmal mit verschiedenen Tags, beachten Sie, dass die früheren Tags ausgeblendet werden.
tags = {
"Team": "Compliance",
"Environment": "Production"
}
Verwenden Sie ResourceManagementClient.tags.begin_update_at_scope, um einer Ressource Tags hinzuzufügen, die bereits Tags enthält. Legen Sie im TagsPatchResource-Objekt den operation Parameter auf Merge.
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.resource.resources.models import TagsPatchResource
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
resource_client = ResourceManagementClient(credential, subscription_id)
resource_group_name = "demoGroup"
storage_account_name = "demostore"
tags = {
"Dept": "Finance",
"Status": "Normal"
}
tag_patch_resource = TagsPatchResource(
operation="Merge",
properties={'tags': tags}
)
resource = resource_client.resources.get_by_id(
f"/subscriptions/{subscription_id}/resourceGroups/{resource_group_name}/providers/Microsoft.Storage/storageAccounts/{storage_account_name}",
"2022-09-01"
)
resource_client.tags.begin_update_at_scope(resource.id, tag_patch_resource)
print(f"Tags {tag_patch_resource.properties.tags} were added to existing tags on resource with ID: {resource.id}")
Beachten Sie, dass die vorhandenen Tags mit dem Hinzufügen der beiden neuen Tags wachsen.
Jeder Tagname darf nur einen Wert aufweisen. Wenn Sie einen neuen Wert für ein Tag angeben, wird der alte Wert auch dann ersetzt, wenn Sie den Zusammenführungsvorgang verwenden. Im folgenden Beispiel wird das Status-Tag von „Normal“ in „Grün“ geändert.
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.resource.resources.models import TagsPatchResource
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
resource_client = ResourceManagementClient(credential, subscription_id)
resource_group_name = "demoGroup"
storage_account_name = "demostore"
tags = {
"Status": "Green"
}
tag_patch_resource = TagsPatchResource(
operation="Merge",
properties={'tags': tags}
)
resource = resource_client.resources.get_by_id(
f"/subscriptions/{subscription_id}/resourceGroups/{resource_group_name}/providers/Microsoft.Storage/storageAccounts/{storage_account_name}",
"2022-09-01"
)
resource_client.tags.begin_update_at_scope(resource.id, tag_patch_resource)
print(f"Tags {tag_patch_resource.properties.tags} were added to existing tags on resource with ID: {resource.id}")
Wenn Sie den operation Parameter auf Replace festlegen, ersetzt der neue Satz von Tags die vorhandenen Tags.
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.resource.resources.models import TagsPatchResource
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
resource_client = ResourceManagementClient(credential, subscription_id)
resource_group_name = "demoGroup"
storage_account_name = "demostore"
tags = {
"Project": "ECommerce",
"CostCenter": "00123",
"Team": "Web"
}
tag_patch_resource = TagsPatchResource(
operation="Replace",
properties={'tags': tags}
)
resource = resource_client.resources.get_by_id(
f"/subscriptions/{subscription_id}/resourceGroups/{resource_group_name}/providers/Microsoft.Storage/storageAccounts/{storage_account_name}",
"2022-09-01"
)
resource_client.tags.begin_update_at_scope(resource.id, tag_patch_resource)
print(f"Tags {tag_patch_resource.properties.tags} replaced tags on resource with ID: {resource.id}")
Nur die neuen Tags verbleiben in der Ressource.
Dieselben Befehle funktionieren auch mit Ressourcengruppen oder Abonnements. Geben Sie sie im Bezeichner der Ressourcengruppe oder des Abonnements an, die Sie taggen möchten. Wenn Sie einer Ressourcengruppe einen neuen Satz von Tags hinzufügen möchten, verwenden Sie Folgendes:
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.resource.resources.models import TagsResource
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
resource_client = ResourceManagementClient(credential, subscription_id)
resource_group_name = "demoGroup"
tags = {
"Dept": "Finance",
"Status": "Normal"
}
tag_resource = TagsResource(
properties={'tags': tags}
)
resource_group = resource_client.resource_groups.get(resource_group_name)
resource_client.tags.begin_create_or_update_at_scope(resource_group.id, tag_resource)
print(f"Tags {tag_resource.properties.tags} were added to resource group: {resource_group.id}")
Um die Tags für eine Ressourcengruppe zu aktualisieren, verwenden Sie Folgendes:
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.resource.resources.models import TagsPatchResource
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
resource_client = ResourceManagementClient(credential, subscription_id)
resource_group_name = "demoGroup"
tags = {
"CostCenter": "00123",
"Environment": "Production"
}
tag_patch_resource = TagsPatchResource(
operation="Merge",
properties={'tags': tags}
)
resource_group = resource_client.resource_groups.get(resource_group_name)
resource_client.tags.begin_update_at_scope(resource_group.id, tag_patch_resource)
print(f"Tags {tag_patch_resource.properties.tags} were added to existing tags on resource group: {resource_group.id}")
Um die Tags für ein Abonnement zu aktualisieren, verwenden Sie Folgendes:
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.resource.resources.models import TagsPatchResource
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
resource_client = ResourceManagementClient(credential, subscription_id)
tags = {
"Team": "Web Apps"
}
tag_patch_resource = TagsPatchResource(
operation="Merge",
properties={'tags': tags}
)
resource_client.tags.begin_update_at_scope(f"/subscriptions/{subscription_id}", tag_patch_resource)
print(f"Tags {tag_patch_resource.properties.tags} were added to subscription: {subscription_id}")
Möglicherweise verfügen Sie über mehrere Ressourcen mit demselben Namen in einer Ressourcengruppe. In diesem Fall können Sie jede Ressource mit den folgenden Befehlen festlegen:
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.resource.resources.models import TagsPatchResource
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
resource_client = ResourceManagementClient(credential, subscription_id)
resource_group_name = "demoGroup"
tags = {
"Dept": "IT",
"Environment": "Test"
}
tag_patch_resource = TagsPatchResource(
operation="Merge",
properties={'tags': tags}
)
resources = resource_client.resources.list_by_resource_group(resource_group_name, filter="name eq 'sqlDatabase1'")
for resource in resources:
resource_client.tags.begin_update_at_scope(resource.id, tag_patch_resource)
print(f"Tags {tag_patch_resource.properties.tags} were added to resource: {resource.id}")
Auflisten von Tags
Um die Tags für eine Ressource, eine Ressourcengruppe oder ein Abonnement abzurufen, verwenden Sie die ResourceManagementClient.tags.get_at_scope Methode, und übergeben Sie die Ressourcen-ID der Entität.
Um die Tags für eine Ressource anzuzeigen, verwenden Sie Folgendes:
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
resource_group_name = "demoGroup"
storage_account_name = "demostorage"
resource_client = ResourceManagementClient(credential, subscription_id)
resource = resource_client.resources.get_by_id(
f"/subscriptions/{subscription_id}/resourceGroups/{resource_group_name}/providers/Microsoft.Storage/storageAccounts/{storage_account_name}",
"2022-09-01"
)
resource_tags = resource_client.tags.get_at_scope(resource.id)
print (resource_tags.properties.tags)
Um die Tags für eine Ressourcengruppe anzuzeigen, verwenden Sie Folgendes:
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
resource_client = ResourceManagementClient(credential, subscription_id)
resource_group = resource_client.resource_groups.get("demoGroup")
resource_group_tags = resource_client.tags.get_at_scope(resource_group.id)
print (resource_group_tags.properties.tags)
Um die Tags für ein Abonnement anzuzeigen, verwenden Sie Folgendes:
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
resource_client = ResourceManagementClient(credential, subscription_id)
subscription_tags = resource_client.tags.get_at_scope(f"/subscriptions/{subscription_id}")
print (subscription_tags.properties.tags)
Nach Tags sortieren
Verwenden Sie Folgendes, um Ressourcen mit einem bestimmten Tagnamen und -wert abzurufen:
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
resource_client = ResourceManagementClient(credential, subscription_id)
resources = resource_client.resources.list(filter="tagName eq 'CostCenter' and tagValue eq '00123'")
for resource in resources:
print(resource.name)
Um Ressourcen mit einem bestimmten Tagnamen mit einem beliebigen Tagwert abzurufen, verwenden Sie Folgendes:
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
resource_client = ResourceManagementClient(credential, subscription_id)
resources = resource_client.resources.list(filter="tagName eq 'Dept'")
for resource in resources:
print(resource.name)
Verwenden Sie Folgendes, um Ressourcengruppen mit einem bestimmten Tagnamen und -wert abzurufen:
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
resource_client = ResourceManagementClient(credential, subscription_id)
resource_groups = resource_client.resource_groups.list(filter="tagName eq 'CostCenter' and tagValue eq '00123'")
for resource_group in resource_groups:
print(resource_group.name)
Entfernen von Tags
Wenn Sie bestimmte Tags entfernen möchten, legen Sie diese operation Eigenschaft auf Delete. Übergeben Sie die Ressourcen-IDs der Zu löschenden Tags.
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.resource.resources.models import TagsPatchResource
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
resource_client = ResourceManagementClient(credential, subscription_id)
resource_group_name = "demoGroup"
storage_account_name = "demostore"
tags = {
"Dept": "IT",
"Environment": "Test"
}
tag_patch_resource = TagsPatchResource(
operation="Delete",
properties={'tags': tags}
)
resource = resource_client.resources.get_by_id(
f"/subscriptions/{subscription_id}/resourceGroups/{resource_group_name}/providers/Microsoft.Storage/storageAccounts/{storage_account_name}",
"2022-09-01"
)
resource_client.tags.begin_update_at_scope(resource.id, tag_patch_resource)
print(f"Tags {tag_patch_resource.properties.tags} were removed from resource: {resource.id}")
Die angegebenen Tags werden entfernt.
Um alle Tags zu entfernen, verwenden Sie die ResourceManagementClient.tags.begin_delete_at_scope-Methode .
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
resource_client = ResourceManagementClient(credential, subscription_id)
subscription = resource_client.subscriptions.get(subscription_id)
resource_client.tags.begin_delete_at_scope(subscription.id)
Nächste Schritte
- Nicht alle Ressourcentypen unterstützen Tags. Informationen dazu, ob Sie ein Tag auf einen Ressourcentyp anwenden können, finden Sie unter Tag-Unterstützung für Azure-Ressourcen.
- Empfehlungen zum Implementieren einer Taggingstrategie finden Sie im Leitfaden zur Ressourcenbenennung und zum Kategorisieren.
- Für Empfehlungen und Einschränkungen von Tags siehe Verwenden von Tags zum Organisieren Ihrer Azure-Ressourcen und der Verwaltungshierarchie.