Поддержка службы Конфигурация приложений Azure для файлов конфигурации

Файлы являются одним из наиболее распространенных способов хранения данных конфигурации. Служба Конфигурация приложений предоставляет средства для импорта файлов конфигурации, поэтому вам не нужно вводить данные вручную. Это позволяет быстро начать работу. Эта операция является одноразовым переносом данных, если после импорта данных вы планируете управлять ими в службе Конфигурация приложений. В некоторых других случаях, например при внедрении конфигурации как кода, вы можете продолжать управлять данными конфигурации в файлах и периодически импортировать их в рамках процесса CI/CD. Вам может подойти один из следующих двух сценариев:

  • Файл конфигурации хранится в формате, который использовался раньше. Этот формат удобен, если вы хотите использовать файл в качестве резервной конфигурации для приложения или локальной конфигурации во время разработки. При импорте файла конфигурации укажите способ преобразования данных в пары "ключ-значение" в службе Конфигурация приложений. В инструментах импорта конфигурации приложений импорта, таких как портал, Azure CLI, задача отправки Azure Pipeline, GitHub Actions и т. д., этот параметр является профилем содержимого файла по умолчанию.
  • Файл конфигурации хранится в формате, содержащем все свойства "ключ-значение" конфигурации приложения. При импорте файла не нужно указывать правила преобразования, так как все свойства ключа-значения уже есть в файле. В инструментах импорта конфигурации приложений этот параметр называется профилем содержимого файла KVSet. Это удобно, если вы хотите управлять всеми данными конфигурации приложений, включая обычные свойства "ключ-значение", ссылки Key Vault и флаги компонентов, в одном файле и импортировать их за один снимок.

В оставшейся части этого документа подробно рассматриваются оба профиля содержимого файлов и в качестве примера используется Azure CLI. Та же концепция применяется и к другим средствам импорта конфигурации приложений.

Профиль содержимого файла: по умолчанию

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

В следующем примере показан файл конфигурации с именем appsettings.json, содержащим один параметр конфигурации и один флаг компонента.

{
    "Logging": {
        "LogLevel": {
            "Default": "Warning"
        }
    },
    "FeatureManagement": {
        "Beta": false
    }
}

Выполните следующую команду CLI, чтобы импортировать его в службу Конфигурация приложений с dev меткой и используйте двоеточие (:) в качестве разделителя для преобразования имени ключа в плоскую структуру. Можно также добавить параметр "--profile appconfig/default". В примере он опущен, так как это значение по умолчанию.

az appconfig kv import --label dev --separator : --name <your store name> --source file --path appsettings.json --format json

Ссылки Key Vault требуют определенного типа контента во время импорта, поэтому их следует хранить в отдельном файле. В следующем примере показан файл с именем keyvault-refs.json.

{
    "Database:ConnectionString": {
        "uri": "https://<your-vault-name>.vault.azure.net/secrets/db-secret"
    }  
}

Выполните следующую команду CLI, чтобы импортировать ее с test меткой и Key Vault ссылочным типом контента.

az appconfig kv import --label test --content-type "application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8" --name <your store name> --source file --path keyvault-refs.json --format json

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

Клавиши Значение Метка Тип содержимого
.appconfig.featureflag/Beta {"id":"Beta","description":"","enabled":false,"conditions":{"client_filters":[]}} разработка application/vnd.microsoft.appconfig.ff+json;charset=utf-8
Logging:LogLevel:Default Предупреждение разработка
Database:ConnectionString {"uri":"https://< your-vault-name.vault.azure.net/secrets/db-secret>"} номер application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8

Профиль содержимого файла: KVSet

Под профилем содержимого файла KVSet в средствах Конфигурация приложений понимается схема файлов, содержащая все свойства конфигурации приложений "ключ-значение", включая ключ, значение, метку, тип контента и теги. Файл имеет формат JSON. Описание спецификации схемы см. в разделе Схема файла KVSet.

Следующий пример — это файл на основе профиля содержимого файла KVSet, который appconfigdata.jsonсодержит флаг компонента, ссылку Key Vault и обычное свойство "ключ-значение".

{
  "items": [
    {
      "key": ".appconfig.featureflag/Beta",
      "value": "{\"id\":\"Beta\",\"description\":\"Beta feature\",\"enabled\":true,\"conditions\":{\"client_filters\":[]}}",
      "label": "dev",
      "content_type": "application/vnd.microsoft.appconfig.ff+json;charset=utf-8",
      "tags": {}
    },
    {
      "key": "Database:ConnectionString",
      "value": "{\"uri\":\"https://<your-vault-name>.vault.azure.net/secrets/db-secret\"}",
      "label": "test",
      "content_type": "application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8",
      "tags": {}
    },
    {
      "key": "Logging:LogLevel:Default",
      "value": "Debug",
      "label": "dev",
      "content_type": null,
      "tags": {}
    }
  ]
}

Совет

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

az appconfig kv export --profile appconfig/kvset --label * --name <your store name> --destination file --path appconfigdata.json --format json 

После экспорта файла обновите свойство enabled флага компонента Beta на true и измените Logging:LogLevel:Default на Debug.

Выполните следующую команду CLI с параметром "--profile appconfig/kvset", чтобы импортировать файл в хранилище конфигураций приложений. Вам не нужно указывать правила преобразования данных, такие как разделитель, метка или тип контента, как это делалось в разделе профиля содержимого файла по умолчанию, так как все сведения уже есть в файле.

az appconfig kv import --profile appconfig/kvset --name <your store name> --source file --path appconfigdata.json --format json

Примечание

Профиль содержимого файла KVSet в настоящее время поддерживается в

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

Клавиши Значение Метка Тип содержимого
.appconfig.featureflag/Beta {"id":"Beta","description":"Beta feature","enabled":true,"conditions":{"client_filters":[]}} разработка application/vnd.microsoft.appconfig.ff+json;charset=utf-8
Logging:LogLevel:Default Отладка разработка
Database:ConnectionString {"uri":"https://< your-vault-name.vault.azure.net/secrets/db-secret>"} номер application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8

Дальнейшие действия