Краткое руководство. Создание хранилища Конфигурация приложений Azure с помощью шаблона ARM

В этом кратком руководстве описывается, как выполнить следующие задачи:

  • развертывание хранилища службы "Конфигурация приложений" с помощью шаблона Azure Resource Manager (шаблон ARM);
  • создание пар "ключ-значение" в хранилище службы "Конфигурация приложений" с помощью шаблона ARM.
  • считывание пар "ключ-значение" в хранилище службы "Конфигурация приложений" с помощью шаблона ARM.

Совет

Флаги компонентов и ссылки Key Vault — это специальные типы пар "ключ-значение". Ознакомьтесь с разделом Дальнейшие действия, чтобы узнать, как создать их с помощью шаблона ARM.

Шаблон Azure Resource Manager — это файл нотации объектов JavaScript (JSON), который определяет инфраструктуру и конфигурацию проекта. В шаблоне используется декларативный синтаксис. Вы описываете предполагаемое развертывание без написания последовательности команд программирования для создания развертывания.

Если среда соответствует предварительным требованиям и вы знакомы с использованием шаблонов ARM, нажмите кнопку Развертывание в Azure. Шаблон откроется на портале Azure.

Кнопка для развертывания шаблона Resource Manager в Azure.

Необходимые компоненты

Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.

Авторизация

Для управления Конфигурация приложений Azure ресурсом внутри шаблона ARM требуется роль Azure Resource Manager, например участник или владельца. Для доступа к данным Конфигурация приложений Azure (ключ-значения, моментальные снимки) требуется роль Azure Resource Manager и роль уровня данных Конфигурация приложений Azure в режиме сквозной проверки подлинности ARM.

Внимание

Для настройки режима проверки подлинности ARM требуется Конфигурация приложений версия 2023-08-01-preview API уровня управления или более поздней версии.

Изучение шаблона

Шаблон, используемый в этом кратком руководстве, взят из шаблонов быстрого запуска Azure. По нему создается новое хранилище Конфигурации приложений с двумя парами "ключ-значение". Затем с помощью функции reference выводятся значения двух ресурсов типа "ключ-значение". Считывание значения ключа таким образом позволяет использовать его в других местах шаблона.

В этом кратком руководстве для создания нескольких экземпляров ресурса типа "ключ-значение" используется элемент copy. Дополнительные сведения об элементе copy см. в статье Итерация ресурсов в шаблонах Resource Manager.

Внимание

Для этого шаблона требуется Конфигурация приложений версии 2022-05-01 API уровня управления или более поздней версии. В этой версии для считывания пары "ключ-значение" используется функция reference. Функция listKeyValue, которая использовалась для чтения пары "ключ-значение" в предыдущей версии, недоступна с версии 2020-07-01-preview.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.5.6.12127",
      "templateHash": "2173262573838896712"
    }
  },
  "parameters": {
    "configStoreName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the App Configuration store."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specifies the Azure location where the app configuration store should be created."
      }
    },
    "keyValueNames": {
      "type": "array",
      "defaultValue": [
        "myKey",
        "myKey$myLabel"
      ],
      "metadata": {
        "description": "Specifies the names of the key-value resources. The name is a combination of key and label with $ as delimiter. The label is optional."
      }
    },
    "keyValueValues": {
      "type": "array",
      "defaultValue": [
        "Key-value without label",
        "Key-value with label"
      ],
      "metadata": {
        "description": "Specifies the values of the key-value resources. It's optional"
      }
    },
    "contentType": {
      "type": "string",
      "defaultValue": "the-content-type",
      "metadata": {
        "description": "Specifies the content type of the key-value resources. For feature flag, the value should be application/vnd.microsoft.appconfig.ff+json;charset=utf-8. For Key Value reference, the value should be application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8. Otherwise, it's optional."
      }
    },
    "tags": {
      "type": "object",
      "defaultValue": {
        "tag1": "tag-value-1",
        "tag2": "tag-value-2"
      },
      "metadata": {
        "description": "Adds tags for the key-value resources. It's optional"
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.AppConfiguration/configurationStores",
      "apiVersion": "2021-10-01-preview",
      "name": "[parameters('configStoreName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "standard"
      }
    },
    {
      "copy": {
        "name": "configStoreKeyValue",
        "count": "[length(parameters('keyValueNames'))]"
      },
      "type": "Microsoft.AppConfiguration/configurationStores/keyValues",
      "apiVersion": "2021-10-01-preview",
      "name": "[format('{0}/{1}', parameters('configStoreName'), parameters('keyValueNames')[copyIndex()])]",
      "properties": {
        "value": "[parameters('keyValueValues')[copyIndex()]]",
        "contentType": "[parameters('contentType')]",
        "tags": "[parameters('tags')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.AppConfiguration/configurationStores', parameters('configStoreName'))]"
      ]
    }
  ],
  "outputs": {
    "reference_key_value_value": {
      "type": "string",
      "value": "[reference(resourceId('Microsoft.AppConfiguration/configurationStores/keyValues', parameters('configStoreName'), parameters('keyValueNames')[0])).value]"
    },
    "reference_key_value_object": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.AppConfiguration/configurationStores/keyValues', parameters('configStoreName'), parameters('keyValueNames')[1]), '2021-10-01-preview', 'full')]"
    }
  }
}

В шаблоне определено два ресурса Azure:

Совет

Имя ресурса keyValues представляет собой сочетание ключа и метки. Ключ и метка соединяются разделителем $. Метку использовать необязательно. В приведенном выше примере ресурс keyValues с именем myKey создает пару "ключ-значение" без метки.

Кодирование с помощью знака процента, также называемое кодированием URL-адреса, позволяет использовать в ключах или метках символы, недопустимые в именах ресурсов шаблона Resource Manager. % не является допустимым символом, поэтому вместо него используется ~. Чтобы правильно закодировать имя, выполните указанные ниже действия.

  1. Примените кодирование URL-адреса.
  2. Замените ~ на ~7E.
  3. Замените % на ~.

Например, чтобы создать пару "ключ-значение" с именем ключа AppName:DbEndpoint и именем метки Test, у ресурса должно быть имя AppName~3ADbEndpoint$Test.

Примечание.

Конфигурация приложения обеспечивает доступ к данным "ключ — значение" по приватному каналу из виртуальной сети. По умолчанию, если эта функция включена,все запросы на данные Конфигурации приложения через общедоступную сеть отклоняются. Так как шаблон Resource Manager выполняется за пределами виртуальной сети, доступ к данным из шаблона Resource Manager не разрешен. Чтобы разрешить доступ к данным из шаблона Resource Manager при использовании приватного канала, можно включить доступ к общедоступной сети с помощью следующей команды Azure CLI. Важно учитывать то, какое влияние оказывает включение доступа к общедоступной сети в этом сценарии на безопасность.

az appconfig update -g MyResourceGroup -n MyAppConfiguration --enable-public-network true

Развертывание шаблона

Выберите следующее изображение, чтобы войти на портал Azure и открыть шаблон. Шаблон создает хранилище Конфигурации приложений с двумя парами "ключ-значение".

Кнопка для развертывания шаблона Resource Manager в Azure.

Кроме того, шаблон можно развернуть с помощью следующего командлета PowerShell. Пара "ключ-значение" будет указана в выходных данных консоли PowerShell.

$projectName = Read-Host -Prompt "Enter a project name that is used for generating resource names"
$location = Read-Host -Prompt "Enter the location (i.e. centralus)"
$templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.appconfiguration/app-configuration-store-kv/azuredeploy.json"

$resourceGroupName = "${projectName}rg"

New-AzResourceGroup -Name $resourceGroupName -Location "$location"
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri

Read-Host -Prompt "Press [ENTER] to continue ..."

Просмотр развернутых ресурсов

  1. Войдите на портал Azure.
  2. В поле поиска портала Azure введите Конфигурация приложений. Выберите Конфигурация приложений в списке.
  3. Выберите созданный ресурс Конфигурации приложений.
  4. В разделе Операции щелкните Обозреватель конфигураций.
  5. Убедитесь, что существует две пары "ключ-значение".

Очистка ресурсов

Ставшие ненужными группу ресурсов, хранилище Конфигурации приложений и все связанные ресурсы можно удалить. Если вы планируете использовать хранилище Конфигурации приложений в дальнейшем, не удаляйте их. Если вам больше не нужно это хранилище, удалите все ресурсы, созданные в ходе работы с этим кратким руководством, выполнив следующий командлет.

$resourceGroupName = Read-Host -Prompt "Enter the Resource Group name"
Remove-AzResourceGroup -Name $resourceGroupName
Write-Host "Press [ENTER] to continue..."

Следующие шаги

Дополнительные сведения о добавлении флагов функций и ссылок Key Vault в хранилище службы "Конфигурация приложений" см. в следующих примерах шаблонов ARM.