Azure Resource Manager と共に Azure Python を使用して Azure リソースを管理する方法について説明します。 リソース グループの管理については、「Python を使用した Azure リソース グループの管理」をご覧ください。
リソースを既存のリソース グループにデプロイする
Python を使用して直接 Azure リソースをデプロイするか、または Azure リソースを作成する Azure Resource Manager テンプレート (ARM テンプレート) をデプロイできます。
Python クラスを使用してリソースをデプロイする
次の例では、StorageManagementClient.storage_accounts.begin_create を使用してストレージ アカウントを作成します。 ストレージ アカウントの名前は、Azure 全体で一意である必要があります。
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"
}
}
)
テンプレートのデプロイ
ARM テンプレートをデプロイするには、ResourceManagementClient.deployments.begin_create_or_update を使用します。 次の例では、リモート テンプレートをデプロイします。 このテンプレートでは、ストレージ アカウントが作成されます。
import os
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)
resource_group_name = input("Enter the resource group name: ")
location = input("Enter the location (i.e. centralus): ")
template_uri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json"
rg_deployment_result = resource_client.deployments.begin_create_or_update(
resource_group_name,
"exampleDeployment",
{
"properties": {
"templateLink": {
"uri": template_uri
},
"parameters": {
"location": {
"value": location
},
},
"mode": DeploymentMode.incremental
}
}
)
リソース グループとリソースをデプロイする
リソース グループを作成して、リソースをそのグループにデプロイすることができます。 詳しくは、「リソース グループを作成してリソースをデプロイする」をご覧ください。
複数のサブスクリプションまたはリソース グループにリソースをデプロイする
テンプレートに含まれているリソースはすべて 1 つのリソース グループにデプロイするのが一般的です。 一方、さまざまなリソースを 1 つにまとめたうえで、複数のリソース グループまたはサブスクリプションにデプロイしたい状況もあります。 詳しくは、「複数のサブスクリプションまたはリソース グループに Azure リソースをデプロイする」をご覧ください。
リソースを削除する
次の例は、ストレージ アカウントを削除する方法を示しています。
import os
from azure.identity import AzureCliCredential
from azure.mgmt.storage import StorageManagementClient
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
storage_client = StorageManagementClient(credential, subscription_id)
resource_group_name = "demoGroup"
storage_account_name = "demostore"
storage_account = storage_client.storage_accounts.delete(
resource_group_name,
storage_account_name
)
Azure Resource Manager によってリソースの削除の順序が決定される方法の詳細については、「Azure Resource Manager によるリソース グループの削除」を参照してください。
リソースの移動
次の例は、1 つのリソース グループから別のリソース グループにストレージ アカウントを移動する方法を示しています。
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)
src_resource_group_name = "sourceGroup"
dest_resource_group_name = "destinationGroup"
storage_account_name = "demostore"
dest_resource_group = resource_client.resource_groups.get(dest_resource_group_name)
storage_account = resource_client.resources.get(
src_resource_group_name, "Microsoft.Storage", "", "storageAccounts", storage_account_name, "2022-09-01"
)
move_result = resource_client.resources.begin_move_resources(
src_resource_group_name,
{
"resources": [storage_account.id],
"targetResourceGroup": dest_resource_group.id,
}
)
詳細については、「 新しいリソース グループまたはサブスクリプションへのリソースの移動」を参照してください。
リソースのロック
ロックすることで、組織内の他のユーザーが重要なリソース (Azure サブスクリプション、リソース グループ、リソースなど) を誤って削除または変更することを防ぎます。
次の例では、Web サイトをロックして削除できないようにします。
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_level(
"exampleGroup",
"Microsoft.Web",
"",
"sites",
"examplesite",
"lockSite",
{
"level": "CanNotDelete"
}
)
次のスクリプトでは、ストレージ アカウントのすべてのロックを取得します。
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.resource.locks import ManagementLockClient
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
resource_client = ResourceManagementClient(credential, subscription_id)
lock_client = ManagementLockClient(credential, subscription_id)
resource_group_name = "demoGroup"
storage_account_name = "demostore"
resource = resource_client.resources.get_by_id(
f"/subscriptions/{subscription_id}/resourceGroups/{resource_group_name}/providers/Microsoft.Storage/storageAccounts/{storage_account_name}",
"2021-04-01"
)
locks = lock_client.management_locks.list_at_resource_level(
resource_group_name,
"Microsoft.Storage",
"",
"storageAccounts",
storage_account_name
)
for lock in locks:
print(f"Lock Name: {lock.name}, Lock Level: {lock.level}")
次のスクリプトでは、Web サイトのロックを削除します。
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_level(
"exampleGroup",
"Microsoft.Web",
"",
"sites",
"examplesite",
"lockSite"
)
詳細については、「Azure Resource Manager によるリソースのロック」を参照してください。
リソースへのタグ付け
タグ付けを利用すると、リソース グループとリソースを論理的に整理できます。 詳細については、タグを使用した Azure リソースの整理 に関する記事をご覧ください。
次のステップ
- Azure Resource Manager については、「Azure Resource Manager の概要」を参照してください。
- Resource Manager テンプレートの構文については、「Azure Resource Manager テンプレートの構造と構文の詳細」を参照してください。
- テンプレートを開発する方法については、ステップバイステップのチュートリアルのページをご覧ください。
- Azure Resource Manager テンプレートのスキーマを表示するには、テンプレート リファレンスのページをご覧ください。