Quickstart: Een Azure-app Configuratiearchief maken met behulp van een ARM-sjabloon

In deze quickstart wordt beschreven hoe u:

  • Een App Configuration-archief implementeren met behulp van een Azure Resource Manager-sjabloon (ARM-sjabloon).
  • Sleutelwaarden maken in een App Configuration-archief met behulp van een ARM-sjabloon.
  • Sleutelwaarden lezen in een App Configuration-archief met behulp van een ARM-sjabloon.

Tip

Functievlagmen en Key Vault-verwijzingen zijn speciale typen sleutelwaarden. Bekijk de volgende stappen voor voorbeelden van het maken ervan met behulp van de ARM-sjabloon.

Een Azure Resource Manager-sjabloon is een JSON-bestand (JavaScript Object Notation) dat de infrastructuur en configuratie voor uw project definieert. Voor de sjabloon is declaratieve syntaxis vereist. U beschrijft de beoogde implementatie zonder de reeks programmeeropdrachten te schrijven om de implementatie te maken.

Als uw omgeving voldoet aan de vereisten en u benkend bent met het gebruik van ARM-sjablonen, selecteert u de knop Implementeren naar Azure. De sjabloon wordt in Azure Portal geopend.

Knop voor het implementeren van de Resource Manager-sjabloon in Azure.

Vereisten

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Autorisatie

Voor het beheren van Azure-app configuratieresource in een ARM-sjabloon is een Azure Resource Manager-rol vereist, zoals inzender of eigenaar. Voor toegang tot Azure App Configuration-gegevens (sleutel-waardeparen, momentopnamen) zijn een Azure Resource Manager-rol en een Azure App Configuration-gegevensvlakrol vereist onder de pass-through-ARM-verificatiemodus.

Belangrijk

Voor het configureren van de ARM-verificatiemodus is de API-versie 2023-08-01-preview van het App Configuration-besturingsvlak of hoger vereist.

De sjabloon controleren

De sjabloon die in deze quickstart wordt gebruikt, komt uit Azure-snelstartsjablonen. Hiermee wordt een nieuwe App Configuration-store gemaakt met daarin twee sleutel-waardeparen. Vervolgens wordt de functie reference gebruikt voor het uitvoeren van de waarden van de twee resources voor sleutelwaarden. Als u de waarde van de sleutel op deze manier leest, kan deze worden gebruikt op andere plaatsen in de sjabloon.

De quickstart gebruikt het element copy om meerdere instanties van de key-value-resource te maken. Zie Resource-iteratie in ARM-sjablonen voor meer informatie over het copy element.

Belangrijk

Deze sjabloon vereist App Configuration-beheerlaag-API-versie 2022-05-01 of later. Deze versie maakt gebruik van de functie reference om sleutelwaarden te lezen. De functie listKeyValue die is gebruikt voor het lezen van sleutelwaarden in de vorige versie is niet meer beschikbaar vanaf versie 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.30.23.60470",
      "templateHash": "539800420350662594"
    }
  },
  "parameters": {
    "configStoreName": {
      "type": "string",
      "defaultValue": "[format('appconfig{0}', uniqueString(resourceGroup().id))]",
      "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": "2024-05-01",
      "name": "[parameters('configStoreName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "standard"
      }
    },
    {
      "copy": {
        "name": "configStoreKeyValue",
        "count": "[length(parameters('keyValueNames'))]"
      },
      "type": "Microsoft.AppConfiguration/configurationStores/keyValues",
      "apiVersion": "2024-05-01",
      "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]), '2024-05-01').value]"
    },
    "reference_key_value_object": {
      "type": "object",
      "value": {
        "name": "[parameters('keyValueNames')[1]]",
        "properties": "[reference(resourceId('Microsoft.AppConfiguration/configurationStores/keyValues', parameters('configStoreName'), parameters('keyValueNames')[1]), '2024-05-01')]"
      }
    }
  }
}

Er worden twee Azure-resources gedefinieerd in de sjabloon:

Tip

De naam van de keyValues-resource is een combinatie van sleutel en label. De sleutel en het label worden samengevoegd met het scheidingsteken $. Het label is optioneel. In het bovenstaande voorbeeld maakt de keyValues-resource met de naam myKey een sleutelwaarde zonder label.

Met procentcodering, ook wel URL-codering genoemd, kunnen sleutels of labels tekens bevatten die niet zijn toegestaan in de resourcenamen van ARM-sjablonen. % is ook geen toegestaan teken, dus ~ wordt gebruikt in plaats daarvan. Voer de volgende stappen uit om een naam correct te coderen:

  1. URL-codering toepassen
  2. Vervang ~ door ~7E
  3. Vervang % door ~

Als u bijvoorbeeld een sleutelwaardepaar met sleutelnaam AppName:DbEndpoint en labelnaam Test wilt maken, moet de resourcenaam AppName~3ADbEndpoint$Test zijn.

Notitie

In App Configuration is toegang tot sleutelwaardegegevens toegestaan via een privékoppeling vanuit het virtuele netwerk. Wanneer de functie is ingeschakeld, worden alle aanvragen voor uw App Configuration-gegevens via het openbare netwerk standaard geweigerd. Omdat de ARM-sjabloon buiten het virtuele netwerk wordt uitgevoerd, is toegang tot gegevens vanuit een ARM-sjabloon niet toegestaan. Als u toegang tot gegevens vanuit een ARM-sjabloon bij gebruik van een privékoppeling wilt toestaan, kunt u toegang via het openbare netwerk inschakelen met behulp van de volgende Azure CLI-opdracht. Het is van belang om rekening te houden met de beveiligingsimplicaties van het inschakelen van toegang via het openbare netwerk in dit scenario. Vervang <ResourceGroupName> en <AppConfigurationStoreName> door de namen van uw resourcegroep en App Configuration-store.

az appconfig update -g <ResourceGroupName> -n <AppConfigurationStoreName> --enable-public-network true

De sjabloon implementeren

Selecteer de volgende afbeelding om u aan te melden bij Azure en een sjabloon te openen. De sjabloon maakt een App Configuration-opslag met daarin twee sleutel-waardeparen.

Knop voor het implementeren van de Resource Manager-sjabloon in Azure.

U kunt de sjabloon ook implementeren met behulp van de volgende PowerShell-cmdlet. De sleutelwaarden vindt u in de uitvoer van de PowerShell-console.

$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 ..."

Geïmplementeerde resources bekijken

  1. Meld u aan bij het Azure-portaal.
  2. Typ App Configuration in het zoekvak van de Azure-portal. Selecteer App Configuration uit de lijst.
  3. Selecteer de zojuist gemaakte App Configuration-resource.
  4. Klik onder Bewerkingen op Configuratieverkenner.
  5. Controleer of er twee sleutelwaarden bestaan.

Resources opruimen

Wanneer u een resourcegroep niet meer nodig hebt, verwijdert u de resourcegroep, het App Configuration-archief en alle gerelateerde resources. Als u van plan bent de App Configuration-store in de toekomst te gebruiken, kunt u het verwijderen ervan overslaan. Als u deze opslag niet meer wilt gebruiken, verwijder dan alle in deze quickstart gemaakte resources door de volgende cmdlet uit te voeren:

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

Volgende stappen

Raadpleeg de onderstaande ARM-sjabloonvoorbeelden voor meer informatie over het toevoegen van functievlag en Key Vault-verwijzing naar een App Configuration-archief.