構成ファイルの Azure App Configuration サポート
ファイルは構成データを格納する最も一般的な方法の 1 つです。 すばやく開始できるように、App Configuration には構成ファイルのインポートに役立つツールが用意されているため、データを手動で入力する必要はありません。 インポート後にデータを App Configuration で管理する予定の場合、この操作は 1 回限りのデータ移行です。 他のいくつかのケースでは、たとえば、コードとして構成を採用する場合、ファイル内の構成データを管理し続け、CI/CD プロセスの一部としてそれらを繰り返しインポートすることができます。 次の 2 つのシナリオのいずれかが該当する場合があります。
- 構成ファイルは、以前の形式で保持します。 この形式は、開発中に、ファイルをアプリケーションまたはローカル構成のフォールバック構成として使用する場合に役立ちます。 構成ファイルをインポートする際に、データを App Configuration のキー値と機能フラグに変換する方法を指定します。 このオプションは、ポータル、Azure CLI、Azure パイプライン インポート タスク、GitHub Actions などの App Configuration インポート ツールの既定のファイル コンテンツ プロファイルです。
- 構成ファイルは、すべての App Configuration キー値プロパティを含む形式で保持します。 ファイルをインポートする際に、キー値のすべてのプロパティが既にファイル内にあるため、変換規則を指定する必要はありません。 このオプションは、App Configuration インポート ツールでは KVSet ファイル コンテンツ プロファイルと呼ばれます。 通常のキー値、Key Vault 参照、機能フラグなど、すべての App Configuration データを 1 つのファイルで管理し、それらを 1 回でインポートする場合に役立ちます。
このドキュメントの残りの部分では、両方のファイル コンテンツ プロファイルについて詳しく説明し、Azure CLI を例として使用します。 他の App Configuration インポート ツールにも同じ概念が適用されます。
ファイル コンテンツ プロファイル: 既定値
アプリ構成ツールの既定のファイル コンテンツ プロファイルは、既存のプログラミング フレームワークまたはシステムで広く採用されている従来の構成ファイル スキーマを参照しています。 App Configuration では、JSON、Yaml、または Properties のファイル形式がサポートされています。
次の例は、構成設定を 1 つと機能フラグを 1 つ含む 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
次の表は、App Configuration ストアにインポートされたすべてのデータを示しています。
キー | 値 | Label | Content type |
---|---|---|---|
.appconfig.featureflag/Beta | {"id":"Beta","description":"","enabled": false,"conditions":{"client_filters":[]}} | dev | application/vnd.microsoft.appconfig.ff+json;charset=utf-8 |
Logging:LogLevel:Default | 警告 | dev | |
Database:ConnectionString | {"uri":"https://<your-vault-name>.vault.azure.net/secrets/db-secret"} | テスト | application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8 |
ファイル コンテンツ プロファイル: KVSet
App Configuration ツールの KVSet ファイル コンテンツ プロファイルからは、キー、値、ラベル、コンテンツタイプ、タグなど、App Configuration のキー値のすべてのプロパティを含むファイル スキーマが参照されます。 このファイルは JSON 形式です。 スキーマの仕様については、KVSet ファイル スキーマに関するページを参照してください。
次の例は、appconfigdata.json
という名前の KVSet ファイル コンテンツ プロファイルに基づくファイルで、機能フラグ、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": {}
}
]
}
ヒント
前のセクションの例に従った場合、App Configuration ストアにデータがあると、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 コマンドを実行して、ファイルを App Configuration ストアにインポートします。 既定のファイル コンテンツ プロファイル セクションで行ったように、区切り記号、ラベル、コンテンツ タイプなどのデータ変換規則を指定する必要はありません。すべての情報は既にファイルに含まれているからです。
az appconfig kv import --profile appconfig/kvset --name <your store name> --source file --path appconfigdata.json --format json
注意
KVSet ファイル コンテンツ プロファイルは現在、以下でサポートされています。
- Azure CLI バージョン 2.30.0 以降
- Azure App Configuration インポート タスク バージョン 10.0.0 以降
- Azure portal
次の表は、App Configuration ストアにインポートされたすべてのデータを示しています。
キー | 値 | Label | Content type |
---|---|---|---|
.appconfig.featureflag/Beta | {"id":"Beta","description":"Beta feature","enabled":true,"conditions":{"client_filters":[]}} | dev | application/vnd.microsoft.appconfig.ff+json;charset=utf-8 |
Logging:LogLevel:Default | デバッグ | dev | |
Database:ConnectionString | {"uri":"https://<your-vault-name>.vault.azure.net/secrets/db-secret"} | テスト | application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8 |