W tym przewodniku Szybki start pokazano, jak spakować szablon usługi Azure Resource Manager (szablon arm) do specyfikacji szablonu. Następnie wdrożysz specyfikację tego szablonu. Specyfikacja szablonu zawiera szablon usługi ARM, który wdraża konto magazynu.
Prerequisites
Konto platformy Azure z aktywną subskrypcją.
Utwórz konto bezpłatnie.
Tworzenie szablonu
Tworzysz specyfikację szablonu z szablonu ARM. Skopiuj poniższy szablon i zapisz go jako C:\Templates\createStorageV1.js.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[uniqueString(resourceGroup().id)]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
}
]
}
Tworzenie specyfikacji szablonu
Specyfikacja szablonu to typ zasobu o nazwie Microsoft.Resources/templateSpecs. Aby utworzyć specyfikację szablonu, użyj programu PowerShell, interfejsu wiersza polecenia platformy Azure, witryny Azure Portal lub szablonu usługi ARM.
Utwórz nową grupę zasobów, aby zawierała specyfikację szablonu.
New-AzResourceGroup `
-Name templateSpecRG `
-Location westus2
Utwórz specyfikację szablonu w tej grupie zasobów. Nadaj nowemu szablonowi nazwę storageSpec.
New-AzTemplateSpec `
-Name storageSpec `
-Version "1.0" `
-ResourceGroupName templateSpecRG `
-Location westus2 `
-TemplateFile "C:\Templates\createStorageV1.json"
Utwórz nową grupę zasobów, aby zawierała specyfikację szablonu.
az group create \
--name templateSpecRG \
--location westus2
Utwórz specyfikację szablonu w tej grupie zasobów. Nadaj nowemu szablonowi nazwę storageSpec.
az ts create \
--name storageSpec \
--version "1.0" \
--resource-group templateSpecRG \
--location "westus2" \
--template-file "C:\Templates\createStorageV1.json"
Zaloguj się w witrynie Azure Portal.
Wyszukaj specyfikacje szablonu. Wybierz pozycję Specyfikacje szablonu z dostępnych opcji.
Wybierz pozycję Importuj szablon, a następnie postępuj zgodnie z instrukcjami, aby zaimportować plik C:\Templates\createStorageV1.json, który zapisałeś wcześniej.
Podaj następujące wartości:
-
Nazwa: wprowadź nazwę specyfikacji szablonu. Na przykład storageSpec.
-
Subskrypcja: wybierz subskrypcję platformy Azure używaną do tworzenia specyfikacji szablonu.
-
Grupa zasobów: wybierz pozycję Utwórz nową, a następnie wprowadź nową nazwę grupy zasobów. Na przykład templateSpecRG.
-
Lokalizacja: wybierz lokalizację grupy zasobów. Na przykład Zachodnie stany USA 2.
-
Wersja: wprowadź wersję specyfikacji szablonu. Użyj wersji 1.0.
Wybierz Przejrzyj + Utwórz, a następnie wybierz Utwórz.
Note
Zalecamy użycie programu PowerShell lub interfejsu wiersza polecenia zamiast szablonu usługi ARM w celu utworzenia specyfikacji szablonu. Te narzędzia automatycznie konwertują połączone szablony na artefakty skojarzone z głównym szablonem. Jeśli używasz szablonu ARM, musisz ręcznie dodać połączone szablony jako elementy, co może to skomplikować.
Gdy używasz szablonu usługi ARM do tworzenia specyfikacji szablonu, szablon jest osadzony w definicji zasobu. Skopiuj następujący szablon i zapisz go lokalnie jako createTemplateSpec.json:
Note
W osadzonym szablonie wszystkie wyrażenia szablonu muszą zostać uniknięci z drugim nawiasem kwadratowym po lewej stronie. Użyj "[[ zamiast "[. Tablice JSON nadal używają pojedynczego lewego nawiasu. Zobacz właściwości nazwy i lokalizacji w poniższym przykładzie:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/templateSpecs",
"apiVersion": "2022-02-01",
"name": "storageSpec",
"location": "westus2",
"properties": {
"displayName": "Storage template spec"
}
},
{
"type": "Microsoft.Resources/templateSpecs/versions",
"apiVersion": "2022-02-01",
"name": "[format('{0}/{1}', 'storageSpec', '1.0')]",
"location": "westus2",
"properties": {
"mainTemplate": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[uniqueString(resourceGroup().id)]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[[parameters('storageAccountName')]",
"location": "[[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
}
]
}
},
"dependsOn": [
"storageSpec"
]
}
]
}
Użyj interfejsu wiersza polecenia platformy Azure lub programu PowerShell, aby utworzyć nową grupę zasobów.
New-AzResourceGroup `
-Name templateSpecRG `
-Location westus2
az group create \
--name templateSpecRG \
--location westus2
Wdróż szablon przy użyciu interfejsu wiersza polecenia platformy Azure lub programu PowerShell.
New-AzResourceGroupDeployment `
-ResourceGroupName templateSpecRG `
-TemplateFile "C:\Templates\createTemplateSpec.json"
az deployment group create \
--resource-group templateSpecRG \
--template-file "C:\Templates\createTemplateSepc.json"
Sprawdź wdrożenie przy użyciu interfejsu wiersza polecenia platformy Azure lub programu PowerShell.
Get-AzTemplateSpec `
-ResourceGroupName templateSpecRG `
-Name storageSpec
az ts show \
--resource-group templateSpecRG \
--name storageSpec
Wdrażanie specyfikacji szablonu
Aby wdrożyć specyfikację szablonu, użyj tych samych poleceń wdrażania, których można użyć do wdrożenia szablonu. Przekaż identyfikator zasobu specyfikacji szablonu do wdrożenia.
Utwórz grupę zasobów zawierającą nowe konto magazynu.
New-AzResourceGroup `
-Name storageRG `
-Location westus2
Pobierz identyfikator zasobu specyfikacji szablonu.
$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
Wdróż specyfikację szablonu.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG
Podaj parametry dokładnie tak, jak w przypadku szablonu usługi ARM. Ponownie wdróż specyfikację szablonu przy użyciu parametru dla typu konta magazynu.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG `
-storageAccountType Standard_GRS
Utwórz grupę zasobów zawierającą nowe konto magazynu.
az group create \
--name storageRG \
--location westus2
Pobierz identyfikator zasobu specyfikacji szablonu.
id=$(az ts show --name storageSpec --resource-group templateSpecRG --version "1.0" --query "id")
Note
Istnieje znany problem z uzyskiwaniem identyfikatora specyfikacji szablonu i przypisywaniem go do zmiennej w programie Windows PowerShell.
Wdróż specyfikację szablonu.
az deployment group create \
--resource-group storageRG \
--template-spec $id
Podaj parametry dokładnie tak, jak w przypadku szablonu usługi ARM. Ponownie wdróż specyfikację szablonu przy użyciu parametru dla typu konta magazynu.
az deployment group create \
--resource-group storageRG \
--template-spec $id \
--parameters storageAccountType='Standard_GRS'
Wybierz utworzoną specyfikację szablonu. Użyj pola wyszukiwania, aby znaleźć specyfikację szablonu, jeśli istnieje wiele.
Wybierz Wdróż.
Podaj następujące wartości:
-
Subskrypcja: wybierz subskrypcję platformy Azure do utworzenia zasobu.
-
Grupa zasobów: wybierz pozycję Utwórz nową , a następnie wprowadź wartość storageRG.
Wybierz Przejrzyj + utwórz, a następnie wybierz Utwórz.
Skopiuj następujący szablon i zapisz go lokalnie jako deployTemplateSpecV1.json:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2025-04-01",
"name": "demo",
"properties": {
"templateLink": {
"id": "[resourceId('templateSpecRG', 'Microsoft.Resources/templateSpecs/versions', 'storageSpec', '1.0')]"
},
"parameters": {
},
"mode": "Incremental"
}
}
]
}
W szablonie , templateSpecRG jest nazwą grupy zasobów, która zawiera specyfikację szablonu, storageSpec jest nazwą specyfikacji szablonu, a 1.0 jest wersją specyfikacji szablonu.
Użyj interfejsu wiersza polecenia platformy Azure lub programu PowerShell, aby utworzyć nową grupę zasobów dla konta magazynu.
New-AzResourceGroup `
-Name storageRG `
-Location westus2
az group create \
--name storageRG \
--location westus2
Wdróż szablon przy użyciu interfejsu wiersza polecenia platformy Azure lub programu PowerShell.
New-AzResourceGroupDeployment `
-ResourceGroupName storageRG `
-TemplateFile "C:\Templates\deployTemplateSpecV1.json"
az deployment group create \
--resource-group storageRG \
--template-file "C:\Templates\deployTemplateSpecV1.json"
Sprawdź wdrożenie przy użyciu interfejsu wiersza polecenia platformy Azure lub programu PowerShell.
Get-AzResource `
-ResourceGroupName storageRG
az resource list \
--resource-group storageRG
Przyznaj dostęp
Aby umożliwić innym użytkownikom w organizacji wdrożenie specyfikacji szablonu, przyznaj im dostęp do odczytu. Przypisz rolę Czytelnik do grupy Microsoft Entra dla grupy zasobów zawierającej specyfikacje szablonu, które chcesz udostępnić. Aby uzyskać więcej informacji, zobacz Samouczek: udzielanie grupie dostępu do zasobów platformy Azure przy użyciu programu Azure PowerShell.
Aktualizowanie szablonu
Aby wprowadzić zmianę w szablonie w specyfikacji szablonu, popraw szablon. Poniższy szablon jest podobny do poprzedniego szablonu, z wyjątkiem tego, że dodaje prefiks nazwy konta magazynu. Skopiuj poniższy szablon i zapisz go jako plik createStorageV2.json .
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[format('store{0}', uniqueString(resourceGroup().id))]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
}
]
}
Aktualizowanie wersji specyfikacji szablonu
Zamiast tworzyć nową specyfikację szablonu dla poprawionego szablonu, dodaj nową wersję o nazwie 2.0 do istniejącej specyfikacji szablonu. Możesz wdrożyć jedną z tych wersji.
Utwórz nową wersję specyfikacji szablonu.
New-AzTemplateSpec `
-Name storageSpec `
-Version "2.0" `
-ResourceGroupName templateSpecRG `
-Location westus2 `
-TemplateFile "C:\Templates\createStorageV2.json"
Aby wdrożyć nową wersję, pobierz identyfikator zasobu dla 2.0 wersji.
$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
Wdróż wersję. Podaj prefiks nazwy konta magazynu.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG `
-namePrefix "demoaccount"
Utwórz nową wersję specyfikacji szablonu.
az ts create \
--name storageSpec \
--version "2.0" \
--resource-group templateSpecRG \
--location "westus2" \
--template-file "C:\Templates\createStorageV2.json"
Aby wdrożyć nową wersję, pobierz identyfikator zasobu dla 2.0 wersji.
id=$(az ts show --name storageSpec --resource-group templateSpecRG --version "2.0" --query "id")
Wdróż wersję. Podaj prefiks nazwy konta magazynu.
az deployment group create \
--resource-group storageRG \
--template-spec $id \
--parameters namePrefix='demoaccount'
Otwórz specyfikację szablonu StorageSpec i wybierz pozycję Utwórz nową wersję.
Wybierz pozycję 1.0 jako szablon podstawowy, a następnie wybierz pozycję Utwórz.
Nadaj nowej wersji 2.0 nazwę i opcjonalnie dodaj notatki. Wybierz pozycję Edytuj szablon.
Zastąp zawartość szablonu zaktualizowanym szablonem. Wybierz pozycję Przejrzyj i zapisz.
Wybierz Zapisz zmiany.
Aby wdrożyć nową wersję, wybierz pozycję Wersje.
Otwórz nową wersję, a następnie wybierz pozycję Wdróż.
Wypełnij pola, takie jak podczas wdrażania starszej wersji.
Wybierz Przejrzyj + utwórz, a następnie wybierz Utwórz.
Ponownie należy wprowadzić pewne zmiany w szablonie lokalnym, aby umożliwić mu pracę ze specyfikacjami szablonu. Skopiuj następujący szablon i zapisz go lokalnie jako createTemplateSpec.json:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/templateSpecs",
"apiVersion": "2022-02-01",
"name": "storageSpec",
"location": "westus2",
"properties": {
"displayName": "Storage template spec"
}
},
{
"type": "Microsoft.Resources/templateSpecs/versions",
"apiVersion": "2022-02-01",
"name": "[format('{0}/{1}', 'storageSpec', '2.0')]",
"location": "westus2",
"properties": {
"mainTemplate": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[format('store{0}', uniqueString(resourceGroup().id))]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[[parameters('storageAccountName')]",
"location": "[[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
}
]
}
},
"dependsOn": [
"storageSpec"
]
}
]
}
Aby dodać nową wersję do specyfikacji szablonu, wdróż szablon przy użyciu interfejsu wiersza polecenia platformy Azure lub programu PowerShell.
New-AzResourceGroupDeployment `
-ResourceGroupName templateSpecRG `
-TemplateFile "C:\Templates\createTemplateSpec.json"
az deployment group create \
--resource-group templateSpecRG \
--template-file "C:\Templates\createTemplateSpec.json"
zweryfikuj wdrożenie za pomocą interfejsu wiersza polecenia platformy Azure lub programu PowerShell.
Get-AzTemplateSpec `
-ResourceGroupName templateSpecRG `
-Name storageSpec
az ts show \
--resource-group templateSpecRG \
--name storageSpec
Nowa wersja 2.0 powinna być widoczna na liście wersji.
Skopiuj następujący szablon i zapisz go lokalnie jako deployTemplateSpecV2.json:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2025-04-01",
"name": "demo",
"properties": {
"templateLink": {
"id": "[resourceId('templateSpecRG', 'Microsoft.Resources/templateSpecs/versions', 'storageSpec', '2.0')]"
},
"parameters": {
},
"mode": "Incremental"
}
}
]
}
Wdróż szablon przy użyciu interfejsu wiersza polecenia platformy Azure lub programu PowerShell.
New-AzResourceGroupDeployment `
-ResourceGroupName storageRG `
-TemplateFile "C:\Templates\deployTemplateSpecV2.json"
az deployment group create \
--resource-group storageRG \
--template-file "C:\Templates\deployTemplateSpecV2.json"
Sprawdź wdrożenie przy użyciu interfejsu wiersza polecenia platformy Azure lub programu PowerShell.
Get-AzResource `
-ResourceGroupName storageRG
az resource list \
--resource-group storageRG
Powinieneś zobaczyć nowe konto magazynu z nazwą rozpoczynającą się od store i unikatowym ciągiem opartym na identyfikatorze grupy zasobów.
Czyszczenie zasobów
Aby wyczyścić zasób wdrożony w tym przewodniku Szybki start, usuń obie utworzone grupy zasobów.
- W witrynie Azure Portal wybierz pozycję Grupa zasobów z menu po lewej stronie.
- Wprowadź nazwę grupy zasobów (templateSpecRG i storageRG) w polu Filtruj według nazwy.
- Wybierz nazwę grupy zasobów.
- Z górnego menu wybierz pozycję Usuń grupę zasobów.
Dalsze kroki
Aby dowiedzieć się więcej o tworzeniu specyfikacji szablonu zawierającej połączone szablony, zobacz jak utworzyć specyfikację szablonu połączonego szablonu.