構成データを格納する一般的な方法は、ファイルを使用することです。 Azure App Configuration を使用して構成データを管理するが、現在ファイルを使用している場合は、データを手動で入力する必要はありません。 ツールを使用して 構成ファイルをインポートできます。
App Configuration でデータを管理する予定の場合、インポート操作は 1 回限りのデータ移行です。 もう 1 つのオプションは、ファイル内の構成データの管理を続行し、継続的インテグレーションと継続的デリバリー (CI/CD) プロセスの一環としてファイルを繰り返しインポートすることです。 このケースは、 コードとして構成を採用するときに発生します。
構成ファイルを使用する場合は、次の 2 つのファイル コンテンツ プロファイルを使用できます。
- 既定のファイル コンテンツ プロファイル: 従来の構成ファイル スキーマ
- KVSet ファイル コンテンツ プロファイル: すべての App Configuration のキー・バリューのプロパティを含むスキーマ
この記事では、両方のファイル コンテンツ プロファイルについて説明します。 また、構成ファイルのインポートとエクスポートの例も示します。 この例では Azure CLI を使用していますが、この記事の概念は他の App Configuration インポート方法にも適用されます。
ファイル コンテンツ プロファイル: 既定値
App Configuration ツールでは、既定のファイル コンテンツ プロファイルは、既存のプログラミング フレームワークやシステムで広く採用されている従来の構成ファイル スキーマです。 このプロファイルは、Azure portal、Azure CLI、Azure Pipelines の Azure App Configuration インポート タスク、GitHub Actions などの App Configuration インポート ツールで使用されます。 App Configuration では、JSON、YAML、およびプロパティのファイル形式がサポートされます。
このプロファイルは、開発中にアプリケーションまたはローカル構成のフォールバック構成としてファイルを使用する場合に役立ちます。 構成ファイルをインポートするときに、データを App Configuration のキー値と機能フラグに変換する方法を指定します。
次の構成ファイル appsettings.jsonでは、既定のファイル コンテンツ プロファイルの例を示します。 このファイルには、1 つの構成設定と 1 つの機能フラグが含まれています。
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"feature_management": {
"feature_flags": [
{
"id": "Beta",
"enabled": false
}
]
}
}
このファイルを App Configuration にインポートするには、次の Azure CLI コマンドを実行します。 設定と機能フラグに dev ラベルを適用し、区切り記号としてコロン (:) を使用してキー名をフラット化します。
az appconfig kv import --label dev --separator : --name <App-Configuration-store-name> --source file --path appsettings.json --format json
必要に応じて、上記のコマンドに次のパラメーターを追加できます: --profile appconfig/default。 既定のプロファイルが appconfig/defaultされているため、パラメーターは省略可能です。
Azure Key Vault 参照では、インポート時に特定のコンテンツ タイプが必要です。 その結果、次のファイルに示すように、それらを別のファイルに保持 keyvault-refs.json。
{
"Database:ConnectionString": {
"uri": "https://<Key-Vault-name>.vault.azure.net/secrets/db-secret"
}
}
このファイルをインポートするには、次の Azure CLI コマンドを実行します。
test ラベルを Key Vault 参照に適用し、Key Vault 参照コンテンツ タイプを使用します。
az appconfig kv import --label test --content-type "application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8" --name <App-Configuration-store-name> --source file --path keyvault-refs.json --format json
次の表は、App Configuration ストアにインポートされたすべてのデータを示しています。
| キー | 値 | Label | コンテンツの種類 |
|---|---|---|---|
| .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://<Key-Vault-name>.vault.azure.net/secrets/db-secret"} | テスト | application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8 |
ファイル コンテンツ プロファイル: KVSet
App Configuration ツールでは、KVSet ファイル コンテンツ プロファイルは、App Configuration キー値のすべてのプロパティを含むファイル スキーマです。 キー名、その値、ラベル、コンテンツ タイプ、およびタグが含まれます。 キー値のすべてのプロパティはファイル内にあるため、ファイルをインポートするときに変換ルールを指定する必要はありません。
KVSet プロファイルを使用する場合は、通常のキー値、Key Vault 参照、および機能フラグを 1 つのファイルに定義できます。 そのため、このプロファイルは、すべての App Configuration データを 1 つのファイルで管理し、1 つの手順でインポートする場合に役立ちます。
このプロファイルを使用するファイルは 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://<Key-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 ストアにデータをインポートする方法の例を示します。 次の Azure CLI コマンドを使用して、そのデータをファイルにエクスポートできます。
az appconfig kv export --profile appconfig/kvset --label * --name <App-Configuration-store-name> --destination file --path appconfigdata.json --format json
ファイルをエクスポートした後、テキスト エディターでファイルを開き、次の変更を行います。
-
Beta機能フラグenabledプロパティをtrueに設定します。 -
Logging:LogLevel:DefaultプロパティをDebugに設定します。
更新されたファイルを App Configuration ストアにインポートするには、 --profile appconfig/kvset パラメーターを含む次の CLI コマンドを実行します。 既定のファイル コンテンツ プロファイルの場合と同様に、区切り記号、ラベル、コンテンツ タイプなどのデータ変換ルールを指定する必要はありません。 必要なすべての情報が既にファイルに含まれています。
az appconfig kv import --profile appconfig/kvset --name <App-Configuration-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 | コンテンツの種類 |
|---|---|---|---|
| .appconfig.featureflag/Beta | {"id":"Beta","description":"ベータ機能","enabled":true,"conditions":{"クライアントフィルター":[]}} | dev | application/vnd.microsoft.appconfig.ff+json;charset=utf-8 |
| Logging:LogLevel:Default | デバッグ | dev | |
| Database:ConnectionString | {"uri":"https://<Key-Vault-name>.vault.azure.net/secrets/db-secret"} | テスト | application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8 |