Настройка резервного копирования файлового ресурса Azure с помощью шаблона ARM

Я пытался настроить резервное копирование файлового ресурса 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'))]"
    >       }
    >     }   ] }
2
задан 14 May 2020 в 10:05
2 ответа

Здесь такое же поведение. Кажется, что формат свойства name в этом случае является обязательным и не задокументирован.

Мне удалось жестко закодировать длинную строку «661bd40fac4e36949e3e814039158f0b6c27ee8a497452559176d00f0cf257cb6» [1165], но она не работает

{
    "$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'))]"
                }
              }
    ]
}

]

2
ответ дан 4 January 2021 в 08:01

Похоже, эта статья отвечает на ваш вопрос; https://docs.microsoft.com/en-us/azure/backup/backup-azure-file-share-rest-api

В статье описывается, что вы можете использовать имя из API GET backupprotectableItems . В своем примере они показывают имя как azurefiles; <имя вашего общего доступа к файлам> , но на самом деле это azurefiles; <какой-то случайный идентификатор> . Как они сами говорят:

Всегда берите атрибут name ответа и заполняйте его в этом запросе. Не программируйте и не создавайте формат имени контейнера или формат имени защищенного элемента. Если вы создадите или жестко запрограммируете его, вызов API не удастся, если формат имени контейнера или формат имени защищенного элемента изменится в будущем.

1
ответ дан 4 January 2021 в 08:01

Теги

Похожие вопросы