クイックスタート: ARM テンプレートを使用して Azure App Configuration ストアを作成する

このクイックスタートでは、以下の方法について説明します。

  • Azure Resource Manager テンプレート (ARM テンプレート) を使用して App Configuration ストアをデプロイする。
  • ARM テンプレートを使用して App Configuration ストアにキー値を作成する。
  • ARM テンプレートから App Configuration ストア内のキー値を読み取る。

ヒント

機能フラグと Key Vault 参照は、特殊な種類のキー値です。 ARM テンプレートを使用してそれらを作成する例については、「次のステップ」を参照してください。

Azure Resource Manager テンプレートは JavaScript Object Notation (JSON) ファイルであり、プロジェクトのインフラストラクチャと構成が定義されています。 このテンプレートでは、宣言型の構文が使用されています。 デプロイしようとしているものを、デプロイを作成する一連のプログラミング コマンドを記述しなくても記述できます。

環境が前提条件を満たしていて、ARM テンプレートの使用に慣れている場合は、 [Azure へのデプロイ] ボタンを選択します。 Azure portal でテンプレートが開きます。

Resource Manager テンプレートを Azure に配置するボタン。

前提条件

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

承認

ARM テンプレート内で Azure App Configuration リソースを管理するには、共同作成者や所有者などの Azure Resource Manager ロールが必要です。 Azure App Configuration データ (キー値、スナップショット) にアクセスするには、パススルー ARM 認証モードで Azure Resource Manager ロールと Azure App Configuration データ プレーン ロールが必要です。

重要

ARM 認証モードを構成するには、App Configuration コントロール プレーン API バージョン 2023-08-01-preview 以降が必要です。

テンプレートを確認する

このクイックスタートで使用されるテンプレートは Azure クイックスタート テンプレートからのものです。 2 つのキー値を含む新しい App Configuration ストアを作成します。 その後、reference 関数を使用して、2 つのキー値リソースの値を出力します。 このようにしてキーの値を読み取ることで、それをテンプレート内の他の場所で使用することができます。

このクイックスタートでは、copy 要素を使用して、キー値リソースのインスタンスを複数作成します。 copy 要素の詳細については、「ARM テンプレートでのリソースの反復処理」を参照してください。

重要

このテンプレートには、App Configuration コントロール プレーン API バージョン 2022-05-01 以降が必要です。 このバージョンでは、キー値の読み取りに 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.27.1.19265",
      "templateHash": "6730256877346875647"
    }
  },
  "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]), '2021-10-01-preview').value]"
    },
    "reference_key_value_object": {
      "type": "object",
      "value": {
        "name": "[parameters('keyValueNames')[1]]",
        "properties": "[reference(resourceId('Microsoft.AppConfiguration/configurationStores/keyValues', parameters('configStoreName'), parameters('keyValueNames')[1]), '2021-10-01-preview')]"
      }
    }
  }
}

テンプレートでは、次の 2 つの Azure リソースが定義されています。

ヒント

keyValues リソースの名前は、キーとラベルの組み合わせです。 キーとラベルが、$ という区切り記号で結合されます。 ラベルは省略可能です。 上の例では、myKey という名前の keyValues リソースによって、ラベルなしのキー値が作成されます。

ARM テンプレートのリソース名に許可されていない文字については、パーセント エンコード (URL エンコード) を使用することでキーまたはラベルに含めることができます。 % は、許可された文字ではないため、~ で代用されます。 名前を正しくエンコードするには、次の手順に従います。

  1. URL エンコードを適用します。
  2. ~~7E に置き換えます。
  3. %~ に置き換えます。

たとえば、キー名が AppName:DbEndpoint で、ラベル名が Test であるキーと値のペアを作成するには、リソース名を AppName~3ADbEndpoint$Test とする必要があります。

Note

App Configuration を使用すると、仮想ネットワークからプライベート リンク経由でキー値データにアクセスできます。 この機能が有効になっている場合、既定では、パブリック ネットワーク上の App Configuration データに対するすべての要求が拒否されます。 ARM テンプレートは仮想ネットワークの外部で実行されるため、ARM テンプレートからのデータ アクセスは許可されません。 プライベート リンクの使用中に ARM テンプレートからのデータ アクセスを許可するには、次の Azure CLI コマンドを使用して、パブリック ネットワーク アクセスを有効にすることができます。 このシナリオでは、パブリック ネットワーク アクセスを有効にすることによるセキュリティへの影響を考慮する必要があります。

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

テンプレートのデプロイ

Azure にサインインし、テンプレートを開くには次のイメージを選択します。 このテンプレートでは、2 つのキー値を含む App Configuration ストアが作成されます。

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 portal にサインインします。
  2. Azure portal の検索ボックスに「App Configuration」と入力します。 一覧から [App Configuration] を選択します。
  3. 新しく作成した App Configuration リソースを選択します。
  4. [Operations](操作)[構成エクスプローラー] をクリックします。
  5. 2 つのキー値が存在することを確認します。

リソースをクリーンアップする

必要がなくなったら、リソース グループ、App Configuration ストア、および関連するすべてのリソースを削除します。 App Configuration ストアを今後使用する予定がある場合は、削除をスキップできます。 このストアを今後使用しない場合には、次のコマンドレットを実行して、このクイックスタートで作成したすべてのリソースを削除してください。

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

次のステップ

App Configuration ストアに機能フラグや Key Vault 参照を追加する方法については、以下の ARM テンプレートの例を参照してください。