Azure 应用程序配置对配置文件的支持

文件是存储配置数据的最常用方法之一。 为了帮助你快速开始,应用程序配置提供了相应的工具来帮助你导入配置文件,使你无需手动键入数据。 如果你打算在导入数据后在应用程序配置中管理数据,可以使用这种一次性数据迁移操作。 例如,在其他某些情况下,如果你采用配置即代码,可以继续在文件中管理配置数据,并将其作为 CI/CD 过程的一部分重复导入。 以下两种方案之一可能适合你:

  • 使用以前用过的格式保存配置文件。 如果要在开发过程中将文件用作应用程序的回退配置或本地配置,则此格式非常有用。 导入配置文件时,指定如何将数据转换为应用程序配置键值。 在门户、Azure CLI、Azure 管道推送任务、GitHub Actions 等应用程序配置导入工具中,此选项是默认文件内容配置文件
  • 使用包含所有应用程序配置键值属性的格式保存配置文件。 导入文件时,无需指定任何转换规则,因为键值的所有属性已在文件中。 在应用程序配置导入工具中,此选项称为 KVSet 文件内容配置文件。 如果要在一个文件中管理所有应用程序配置数据(包括常规键值、密钥保管库引用和功能标志)并一次性导入这些数据,此格式非常有用。

本文档的余下内容将详细介绍这两个文件内容配置文件,并使用 Azure CLI 作为示例。 所述的概念同样适用于其他应用程序配置导入工具。

文件内容配置文件:默认

应用程序配置工具中的默认文件内容配置文件引用现有编程框架或系统广泛采用的传统配置文件架构。 应用程序配置支持 JSON、Yaml 或 Properties 文件格式。

以下示例是一个名为 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

在导入期间,密钥保管库引用需要特定的内容类型,因此请将这些引用保存在单独的文件中。 以下示例是一个名为 keyvault-refs.json 的文件。

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

运行以下 CLI 命令,以使用 test 标签和密钥保管库引用内容类型导入此文件。

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

下表显示了应用程序配置存储中所有已导入的数据。

密钥 Label 内容类型
.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.cn/secrets/db-secret"} 测试 application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8

文件内容配置文件:KVSet

应用程序配置工具中的 KVSet 文件内容配置文件引用包含应用程序配置键值的所有属性(包括键、值、标签、内容类型和标记)的文件架构。 该文件采用 JSON 格式。 有关架构规范,请参阅 KVSet文件架构

以下示例是基于 KVSet 文件内容配置文件的文件,其名为 appconfigdata.json,其中包含功能标志、密钥保管库引用和常规键值。

{
  "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.cn/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 

导出文件后,将 Beta 功能标志 enabled 属性更新为 true,并将 Logging:LogLevel:Default 更改为 Debug

结合参数“--profile appconfig/kvset”运行以下 CLI 命令,以将文件导入应用程序配置存储。 无需像在默认文件内容配置文件部分中那样指定任何数据转换规则(例如分隔符、标签或内容类型),因为所有信息已在文件中。

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

注意

KVSet 文件内容配置文件目前在

下表显示了应用程序配置存储中所有已导入的数据。

密钥 Label 内容类型
.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.cn/secrets/db-secret"} 测试 application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8

后续步骤