Я пытался настроить резервное копирование файлового ресурса Azure с помощью развертывания шаблона ARM. Ниже представлен шаблон, который я пытаюсь развернуть. Сначала я создаю политику резервного копирования, а затем пытаюсь настроить резервное копирование для общей папки.
Вопрос в том, что в шаблон я должен передать защищенные элементы в формате ниже. (azurefileshare; someUniqueID) (мне нужно передать уникальный идентификатор защищенного элемента вместо имени файлового ресурса). Но этот идентификатор можно получить только после настройки резервного копирования.
Дайте мне знать, если кто-нибудь знает об этом.
> "protectedItems": {
> "value": [
> "azurefileshare;xxxx1f5e4535076cxxxxxxxxxxxb9ff558024ff8xxxxxxcefce6"
> ]
>
Tempate.json
> {
> "$schema":"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
> "contentVersion": "1.0.0.0",
> "parameters": {
> "vaultName": {
> "type": "String"
> },
> "vaultRG": {
> "type": "String"
> },
> "vaultSubID": {
> "type": "String"
> },
> "policyName": {
> "type": "String"
> },
> "schedule": {
> "type": "Object"
> },
> "retention": {
> "type": "Object"
> },
> "timeZone": {
> "type": "String"
> },
> "fabricName": {
> "type": "String"
> },
> "protectionContainers": {
> "type": "Array"
> },
> "protectedItems": {
> "type": "Array"
> },
> "sourceResourceIds": {
> "type": "Array"
> } }, "resources": [
> {
> "type": "Microsoft.RecoveryServices/vaults/backupPolicies",
> "apiVersion": "2016-06-01",
> "name": "[concat(parameters('vaultName'), '/', parameters('policyName'))]",
> "properties": {
> "backupManagementType": "AzureStorage",
> "WorkloadType": "AzureFileShare",
> "schedulePolicy": "[parameters('schedule')]",
> "retentionPolicy": "[parameters('retention')]",
> "TimeZone": "[parameters('timeZone')]"
> }
> },
> {
> "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems",
> "apiVersion": "2016-06-01",
> "name": "[concat(parameters('vaultName'), '/', parameters('fabricName'),
> '/',parameters('protectionContainers')[copyIndex()], '/',
> parameters('protectedItems')[copyIndex()])]",
> "dependsOn": [
> "[concat('Microsoft.RecoveryServices/vaults', '/', parameters('vaultName'), '/backupPolicies/',
> parameters('policyName'))]"
> ],
> "properties": {
> "backupManagementType": "AzureStorage",
> "workloadType": "AzureFileShare",
> "friendlyName": "afs",
> "protectedItemType": "AzureFileShareProtectedItem",
> "policyId": "[resourceId('Microsoft.RecoveryServices/vaults/backupPolicies',
> parameters('vaultName'), parameters('policyName'))]",
> "sourceResourceId": "[parameters('sourceResourceIds')[copyIndex()]]"
> },
> "copy": {
> "name": "protectedItemsCopy",
> "count": "[length(parameters('protectedItems'))]"
> }
> } ] }
Вот такое же поведение. Кажется, что формат свойства название в этом случае является обязательным и не документируется.
Мне удалось жестко запрограммировать длинную строку «661bd40fac4e36949e3e814039158f0b6c27ee8a497452559176d00f0cf257cb6»
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vaultName": { "value": "blablabla" },
"vaultRG": { "value": "rg-blablabla" },
"policyName": { "value": "DailyPolicy" },
"fabricName": { "value": "Azure" },
"protectionContainers": {
"value": [
"storagecontainer;storage;rg-blablabla;storage002"
]
},
"protectedItems": {
"value": [
"azurefileshare;661bd40fac4e36949e3e814039158f0b6c27ee8a497452559176d00f0cf257cb6"
]
},
"sourceResourceIds": {
"value": [
"/subscriptions/ blabla bla /resourceGroups/rg-blablabla/providers/Microsoft.Storage/storageAccounts/storage002"
]
}
}
}
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vaultName": { "type": "string" },
"vaultRG": { "type": "string" },
"vaultSubID": { "type": "string" },
"policyName": { "type": "string" },
"fabricName": { "type": "string" },
"protectionContainers": { "type": "array" },
"protectedItems": { "type": "array" },
"sourceResourceIds": { "type": "array" }
},
"resources": [
{
"name": "[concat(parameters('vaultName'), '/', parameters('fabricName'), '/',parameters('protectionContainers')[copyIndex()], '/', parameters('protectedItems')[copyIndex()])]",
"apiVersion": "2020-02-02",
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems",
"properties": {
"backupManagementType": "AzureStorage",
"workloadType": "AzureFileShare",
"friendlyName": "afs",
"protectedItemType": "AzureFileShareProtectedItem",
"policyId": "[resourceId('Microsoft.RecoveryServices/vaults/backupPolicies', parameters('vaultName'), parameters('policyName'))]",
"sourceResourceId": "[parameters('sourceResourceIds')[copyIndex()]]"
},
"copy": {
"name": "protectedItemsCopy",
"count": "[length(parameters('protectedItems'))]"
}
}
]
}
Функционал не полный, но работает
@ MiGel0 Надеюсь, у вас все хорошо. Я пробовал разное время с одним и тем же шаблоном руки для резервного копирования общего файлового ресурса azure в хранилище Azure, но боролся с той же ошибкой, как упомянуто ниже:
Операция с ресурсом завершена с состоянием подготовки терминала «Сбой». Microsoft Azure Backup обнаружила внутреннюю ошибку.
Убедительно посоветуйте, как с этим побороться.