Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zasób rozszerzenia to zasób, który modyfikuje inny zasób. Można na przykład przypisać rolę do zasobu. Przypisanie roli jest typem zasobu rozszerzenia.
Aby uzyskać pełną listę typów zasobów rozszerzeń, zobacz Typy zasobów, które rozszerzają możliwości innych zasobów.
W tym artykule pokazano, jak ustawić zakres dla typu zasobu rozszerzenia podczas wdrażania przy użyciu szablonu usługi Azure Resource Manager (szablon arm). Opisuje on właściwość zakresu, która jest dostępna dla zasobów rozszerzenia podczas stosowania do zasobu.
Uwaga / Notatka
Właściwość zakresu jest dostępna tylko dla typów zasobów rozszerzeń. Aby określić inny zakres dla typu zasobu, który nie jest typem rozszerzenia, użyj zagnieżdżonego lub połączonego wdrożenia. Aby uzyskać więcej informacji, zapoznaj się z wdrożeniami grup zasobów, wdrożeniami subskrypcji, wdrożeniami grup zarządzania i wdrożeniami dzierżawców.
Zastosowanie w zakresie wdrożenia
Aby zastosować typ zasobu rozszerzenia w docelowym zakresie wdrażania, należy dodać zasób do szablonu, tak jak w przypadku dowolnego typu zasobu. Dostępne zakresy to grupa zasobów, subskrypcja, grupa zarządzania i dzierżawa. Zakres wdrożenia musi obsługiwać typ zasobu.
Poniższy szablon wdraża blokadę.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
},
"resources": [
{
"type": "Microsoft.Authorization/locks",
"apiVersion": "2016-09-01",
"name": "rgLock",
"properties": {
"level": "CanNotDelete",
"notes": "Resource Group should not be deleted."
}
}
]
}
Po wdrożeniu w grupie zasobów blokuje ona grupę zasobów.
az deployment group create \
--resource-group ExampleGroup \
--template-uri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/scope/locktargetscope.json"
W następnym przykładzie przypisano rolę.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"parameters": {
"principalId": {
"type": "string",
"metadata": {
"description": "The principal to assign the role to"
}
},
"builtInRoleType": {
"type": "string",
"allowedValues": [
"Owner",
"Contributor",
"Reader"
],
"metadata": {
"description": "Built-in role to assign"
}
},
"roleNameGuid": {
"type": "string",
"metadata": {
"description": "The role assignment name"
}
}
},
"variables": {
"Owner": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')]",
"Contributor": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]",
"Reader": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]"
},
"resources": [
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2020-10-01-preview",
"name": "[parameters('roleNameGuid')]",
"properties": {
"roleDefinitionId": "[variables(parameters('builtInRoleType'))]",
"principalId": "[parameters('principalId')]"
}
}
],
"outputs": {}
}
Po wdrożeniu w subskrypcji przypisuje jej rolę.
az deployment sub create \
--name demoSubDeployment \
--location centralus \
--template-uri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/scope/roletargetscope.json"
Zastosuj do zasobu
Aby zastosować rozszerzenie do zasobu, użyj właściwości scope
. Ustaw właściwość zakresu na nazwę zasobu, do którego dodajesz rozszerzenie. Właściwość zakresu jest właściwością główną dla typu zasobu rozszerzenia.
Poniższy przykład tworzy konto przechowywania i przypisuje do niego rolę.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"principalId": {
"type": "string",
"metadata": {
"description": "The principal to assign the role to"
}
},
"builtInRoleType": {
"type": "string",
"allowedValues": [
"Owner",
"Contributor",
"Reader"
],
"metadata": {
"description": "Built-in role to assign"
}
},
"roleNameGuid": {
"type": "string",
"defaultValue": "[newGuid()]",
"metadata": {
"description": "A new GUID used to identify the role assignment"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"Owner": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')]",
"Contributor": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]",
"Reader": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]",
"storageName": "[concat('storage', uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[variables('storageName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {}
},
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2020-10-01-preview",
"name": "[parameters('roleNameGuid')]",
"scope": "[concat('Microsoft.Storage/storageAccounts', '/', variables('storageName'))]",
"dependsOn": [
"[variables('storageName')]"
],
"properties": {
"roleDefinitionId": "[variables(parameters('builtInRoleType'))]",
"principalId": "[parameters('principalId')]"
}
}
]
}
Właściwości resourceGroup i subscription są dozwolone tylko w przypadku wdrożeń zagnieżdżonych lub połączonych. Te właściwości nie są dozwolone dla poszczególnych zasobów. Użyj wdrożeń zagnieżdżonych lub połączonych, jeśli chcesz wdrożyć rozszerzony zasób z zakresem ustawionym na zasób w innej grupie zasobów.
Dalsze kroki
- Aby zrozumieć, jak definiować parametry w szablonie, zapoznaj się z Omówieniem struktury i składni szablonów ARM.
- Aby uzyskać porady dotyczące rozwiązywania typowych błędów wdrażania, zobacz Rozwiązywanie typowych błędów wdrażania platformy Azure za pomocą usługi Azure Resource Manager.
- Aby uzyskać informacje o wdrażaniu szablonu wymagającego tokenu SAS, zobacz Wdrażanie prywatnego szablonu usługi ARM przy użyciu tokenu SAS.