Címkék alkalmazása a Pythonnal
Ez a cikk azt ismerteti, hogyan címkézhet meg erőforrásokat, erőforráscsoportokat és előfizetéseket a Python használatával. A címkékre vonatkozó javaslatokért és korlátozásokért lásd : Címkék használata az Azure-erőforrások és a felügyeleti hierarchia rendszerezéséhez.
Előfeltételek
A Python 3.8 vagy újabb verziója telepítve van. A legújabb telepítésről a Python.org
A következő Azure-kódtárcsomagok a Pythonhoz telepítve vannak a virtuális környezetben. Bármelyik csomag telepítéséhez használja a
pip install {package-name}
- azure-identity
- azure-mgmt-resource
Ha ezeknek a csomagoknak a régebbi verziói már telepítve vannak a virtuális környezetben, előfordulhat, hogy frissítenie kell őket a következővel:
pip install --upgrade {package-name}
A cikkben szereplő példák parancssori felületi hitelesítést (CLI-alapú hitelesítést)
AzureCliCredential
használnak. A környezettől függően előfordulhat, hogy először futtatniaaz login
kell a hitelesítéshez.Környezeti változó az Azure-előfizetés azonosítójával. Az Azure-előfizetés azonosítójához használja a következőt:
az account show --name 'your subscription name' --query id -o tsv
Az érték beállításához használja a környezet beállítását.
setx AZURE_SUBSCRIPTION_ID your-subscription-id
Feljegyzés
Ha csak az aktuális futó konzolon kell hozzáférnie a környezeti változóhoz, a környezeti változót
set
ahelyettsetx
állíthatja be.A környezeti változók hozzáadása után előfordulhat, hogy újra kell indítania a futó programokat, amelyeknek be kell olvasniuk a környezeti változót, beleértve a konzolablakot is. Ha például a Visual Studiót használja szerkesztőként, indítsa újra a Visual Studiót a példa futtatása előtt.
Címkék alkalmazása
Az Azure Python a címkék alkalmazásának ResourceManagementClient.tags.begin_create_or_update_at_scope metódusát kínálja. Az erőforrás, erőforráscsoport vagy előfizetés összes címkéjének lecserélése. Amikor meghívja a parancsot, adja meg a címkézni kívánt entitás erőforrás-azonosítóját.
Az alábbi példa címkéket alkalmaz egy tárfiókra:
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}")
Ha ismét futtatja a parancsot, de ezúttal más címkékkel, figyelje meg, hogy a korábbi címkék eltűnnek.
tags = {
"Team": "Compliance",
"Environment": "Production"
}
Ha címkéket szeretne hozzáadni egy olyan erőforráshoz, amelynek már vannak címkéi, használja a ResourceManagementClient.tags.begin_update_at_scope. A TagsPatchResource objektumon állítsa a paramétert a operation
következőreMerge
: .
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}")
Figyelje meg, hogy a meglévő címkék növekednek a két új címke hozzáadásával.
Minden címkenév csak egy értékkel rendelkezhet. Ha új értéket ad meg egy címkéhez, az akkor is lecseréli a régi értéket, ha az egyesítési műveletet használja. Az alábbi példa normálról zöldre módosítja a Status
címkét.
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}")
A paraméter Replace
beállításakor operation
az új címkekészlet lecseréli a meglévő címkéket.
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}")
Csak az új címkék maradnak az erőforráson.
Ugyanezek a parancsok erőforráscsoportokkal vagy előfizetésekkel is működnek. Adja meg őket a címkézni kívánt erőforráscsoport vagy előfizetés azonosítójában. Ha új címkekészletet szeretne hozzáadni egy erőforráscsoporthoz, használja a következőt:
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}")
Egy erőforráscsoport címkéinek frissítéséhez használja a következőt:
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}")
Az előfizetés címkéinek frissítéséhez használja a következőt:
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}")
Előfordulhat, hogy egy erőforráscsoportban egynél több erőforrás szerepel ugyanazzal a névvel. Ebben az esetben az egyes erőforrásokat a következő parancsokkal állíthatja be:
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}")
Címkék listázása
Egy erőforrás, erőforráscsoport vagy előfizetés címkéinek lekéréséhez használja a ResourceManagementClient.tags.get_at_scope metódust, és adja meg az entitás erőforrás-azonosítóját.
Az erőforrás címkéinek megtekintéséhez használja a következőt:
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)
Egy erőforráscsoport címkéinek megtekintéséhez használja a következőt:
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)
Az előfizetés címkéinek megtekintéséhez használja a következőt:
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)
Lista címke szerint
Ha egy adott címkenévvel és értékkel rendelkező erőforrásokat szeretne lekérni, használja a következőt:
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)
Ha egy adott címkenévvel rendelkező erőforrásokat szeretne lekérni bármilyen címkeértékkel, használja a következőt:
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)
Ha egy adott címkenévvel és értékkel rendelkező erőforráscsoportokat szeretne lekérni, használja a következőt:
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)
Címkék eltávolítása
Adott címkék eltávolításához állítsa be a következőt operation
Delete
: . Adja át a törölni kívánt címkék erőforrásazonosítóit.
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}")
A megadott címkék törlődnek.
Az összes címke eltávolításához használja a ResourceManagementClient.tags.begin_delete_at_scope metódust.
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)
Következő lépések
- Nem minden erőforrástípus támogatja a címkéket. Azt, hogy egy címke alkalmazható-e egy erőforrástípusra, az Azure-erőforráspk címketámogatása című cikk alapján állapíthatja meg.
- A címkézési stratégia implementálásával kapcsolatos javaslatokért tekintse meg az erőforrás-elnevezési és címkézési döntési útmutatót.
- A címkékre vonatkozó javaslatokért és korlátozásokért lásd : Címkék használata az Azure-erőforrások és a felügyeleti hierarchia rendszerezéséhez.