Správa skupin prostředků Azure pomocí Pythonu
Naučte se používat Python s Azure Resource Manager ke správě skupin prostředků Azure.
Požadavky
Nainstalovaný Python 3.7 nebo novější. Pokud chcete nainstalovat nejnovější verzi, podívejte se na Python.org
Ve vašem virtuálním prostředí jsou nainstalované následující balíčky knihovny Azure pro Python. Pokud chcete nainstalovat některý z balíčků, použijte
pip install {package-name}
- azure-identity
- azure-mgmt-resource
- azure-mgmt-storage
Pokud už máte ve virtuálním prostředí nainstalované starší verze těchto balíčků, možná je budete muset aktualizovat pomocí
pip install --upgrade {package-name}
Příklady v tomto článku používají ověřování na základě rozhraní příkazového řádku (
AzureCliCredential
). V závislosti na vašem prostředí možná budete muset k ověření nejprve spustit příkazaz login
.Proměnná prostředí s ID vašeho předplatného Azure. K získání ID předplatného Azure použijte:
az account show --name 'your subscription name' --query id -o tsv
K nastavení hodnoty použijte možnost pro vaše prostředí.
setx AZURE_SUBSCRIPTION_ID your-subscription-id
Poznámka
Pokud potřebujete získat přístup pouze k proměnné prostředí v aktuálně spuštěné konzole, můžete proměnnou prostředí nastavit pomocí
setx
proměnnéset
místo .Po přidání proměnných prostředí může být nutné restartovat všechny spuštěné programy, které budou potřebovat přečíst proměnnou prostředí, včetně okna konzoly. Pokud například jako editor používáte Visual Studio, před spuštěním příkladu visual studio restartujte.
Co je skupina prostředků?
Skupina prostředků je kontejner, který uchovává související prostředky pro řešení Azure. Skupina prostředků může zahrnovat všechny prostředky pro řešení nebo pouze ty prostředky, které chcete spravovat jako skupinu. O tom, jak chcete přidat prostředky do skupin prostředků, rozhodujete na základě toho, co je pro vaši organizaci nejvhodnější. Obecně platí, že prostředky, které sdílejí stejný životní cyklus, přidejte do stejné skupiny prostředků, abyste je mohli snadno nasadit, aktualizovat a odstranit jako skupinu.
Skupina prostředků ukládá metadata o prostředcích. Když zadáte umístění pro skupinu prostředků, určujete, kde se tato metadata ukládají. Z důvodu dodržování předpisů může být nutné zajistit, aby se data ukládala v určité oblasti.
Vytvoření skupin prostředků
Pokud chcete vytvořit skupinu prostředků, použijte ResourceManagementClient.resource_groups.create_or_update.
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)
rg_result = resource_client.resource_groups.create_or_update(
"exampleGroup",
{
"location": "westus"
}
)
print(f"Provisioned resource group with ID: {rg_result.id}")
Výpis skupin prostředků
Pokud chcete zobrazit seznam skupin prostředků ve vašem předplatném, použijte ResourceManagementClient.resource_groups.list.
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)
rg_list = resource_client.resource_groups.list()
for rg in rg_list:
print(rg.name)
Pokud chcete získat jednu skupinu prostředků, použijte ResourceManagementClient.resource_groups.get a zadejte název skupiny prostředků.
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)
rg_result = resource_client.resource_groups.get("exampleGroup")
print(f"Retrieved resource group {rg_result.name} in the {rg_result.location} region with resource ID {rg_result.id}")
Odstranění skupin prostředků
Pokud chcete odstranit skupinu prostředků, použijte ResourceManagementClient.resource_groups.begin_delete.
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)
rg_result = resource_client.resource_groups.begin_delete("exampleGroup")
Další informace o tom, jak Azure Resource Manager objednává odstranění prostředků, najdete v tématu Odstranění skupiny prostředků Azure Resource Manager.
Nasazení prostředků
Prostředky Azure můžete nasadit pomocí tříd Pythonu nebo nasazením šablony Azure Resource Manager (šablony ARM).
Nasazení prostředků pomocí tříd Pythonu
Následující příklad vytvoří účet úložiště pomocí StorageManagementClient.storage_accounts.begin_create. Název účtu úložiště musí být v rámci Azure jedinečný.
import os
import random
from azure.identity import AzureCliCredential
from azure.mgmt.storage import StorageManagementClient
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
random_postfix = ''.join(random.choices('abcdefghijklmnopqrstuvwxyz1234567890', k=13))
storage_account_name = "demostore" + random_postfix
storage_client = StorageManagementClient(credential, subscription_id)
storage_account_result = storage_client.storage_accounts.begin_create(
"exampleGroup",
storage_account_name,
{
"location": "westus",
"sku": {
"name": "Standard_LRS"
}
}
)
Nasazení prostředků pomocí šablony ARM
K nasazení šablony ARM použijte ResourceManagementClient.deployments.begin_create_or_update. Následující příklad vyžaduje místní šablonu s názvem storage.json
.
import os
import json
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.resource.resources.models import DeploymentMode
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
resource_client = ResourceManagementClient(credential, subscription_id)
with open("storage.json", "r") as template_file:
template_body = json.load(template_file)
rg_deployment_result = resource_client.deployments.begin_create_or_update(
"exampleGroup",
"exampleDeployment",
{
"properties": {
"template": template_body,
"parameters": {
"storagePrefix": {
"value": "demostore"
},
},
"mode": DeploymentMode.incremental
}
}
)
Následující příklad ukazuje šablonu ARM s názvem storage.json
, kterou nasazujete:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"type": "string",
"minLength": 3,
"maxLength": 11
}
},
"variables": {
"uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[variables('uniqueStorageName')]",
"location": "eastus",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
]
}
Další informace o nasazení šablony ARM najdete v tématu Nasazení prostředků pomocí šablon ARM a Azure CLI.
Uzamčení skupin prostředků
Uzamykání zabraňuje tomu, aby ostatní uživatelé ve vaší organizaci omylem odstranili nebo změnili důležité prostředky.
Pokud chcete zabránit odstranění skupiny prostředků a jejích prostředků, použijte ManagementLockClient.management_locks.create_or_update_at_resource_group_level.
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
lock_client = ManagementLockClient(credential, subscription_id)
lock_result = lock_client.management_locks.create_or_update_at_resource_group_level(
"exampleGroup",
"lockGroup",
{
"level": "CanNotDelete"
}
)
Pokud chcete získat zámky pro skupinu prostředků, použijte ManagementLockClient.management_locks.list_at_resource_group_level.
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
lock_client = ManagementLockClient(credential, subscription_id)
lock_result = lock_client.management_locks.get_at_resource_group_level("exampleGroup", "lockGroup")
print(f"Lock {lock_result.name} applies {lock_result.level} lock")
Pokud chcete odstranit zámek skupiny prostředků, použijte ManagementLockClient.management_locks.delete_at_resource_group_level.
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
lock_client = ManagementLockClient(credential, subscription_id)
lock_client.management_locks.delete_at_resource_group_level("exampleGroup", "lockGroup")
Další informace najdete v tématu Zamknutí prostředků pomocí Azure Resource Manageru.
Označení skupin prostředků
Ke skupinám prostředků a prostředkům můžete použít značky, abyste mohli prostředky logicky uspořádat. Informace najdete v tématu Použití značek k uspořádání prostředků Azure.
Export skupin prostředků do šablon
Pokud chcete pomoct s vytvářením šablon ARM, můžete šablonu exportovat z existujících prostředků. Další informace najdete v tématu Použití Azure Portal k exportu šablony.
Správa přístupu ke skupinám prostředků
Řízení přístupu na základě role v Azure (Azure RBAC) je způsob, jakým spravujete přístup k prostředkům v Azure. Další informace najdete v tématu Přidání nebo odebrání přiřazení rolí Azure pomocí Azure CLI.
Další kroky
- Informace o azure Resource Manager najdete v tématu Přehled azure Resource Manager.
- Další informace o možnostech ověřování najdete v tématu Ověřování aplikací Pythonu ve službách Azure pomocí sady Azure SDK pro Python.