Dela via


Snabbstart: Skapa ett Azure App Configuration Store med hjälp av en ARM-mall

I den här snabbstarten beskrivs hur du:

  • Distribuera ett App Configuration Store med hjälp av en Azure Resource Manager-mall (ARM-mall).
  • Skapa nyckelvärden i ett appkonfigurationsarkiv med hjälp av ARM-mallen.
  • Läs nyckelvärden i ett appkonfigurationsarkiv från ARM-mallen.

Dricks

Funktionsflaggor och Key Vault-referenser är särskilda typer av nyckelvärden. I Nästa steg finns exempel på hur du skapar dem med hjälp av ARM-mallen.

En Azure Resource Manager-mall är en JSON-fil (JavaScript Object Notation) som definierar infrastrukturen och konfigurationen för projektet. Mallen använder deklarativ syntax. Du beskriver den avsedda distributionen utan att skriva sekvensen med programmeringskommandon för att skapa distributionen.

Om din miljö uppfyller förhandskraven och du är van att använda ARM-mallar väljer du knappen Distribuera till Azure. Mallen öppnas på Azure-portalen.

Knapp för att distribuera Resource Manager-mallen till Azure.

Förutsättningar

Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.

Auktorisering

För att hantera Azure App Configuration-resursen i en ARM-mall krävs Azure Resource Manager-rollen, till exempel deltagare eller ägare. Åtkomst till Azure App Configuration-data (nyckelvärden, ögonblicksbilder) kräver Azure Resource Manager-rollen och Azure App Configuration-dataplansrollen under DIREKT-ARM-autentiseringsläge.

Viktigt!

För att konfigurera ARM-autentiseringsläget krävs api-version 2023-08-01-preview för appkonfigurationskontrollplan eller senare.

Granska mallen

Mallen som används i den här snabbstarten kommer från Azure-snabbstartsmallar. Det skapar ett nytt App Configuration Store med två nyckelvärden inuti. Den använder reference sedan funktionen för att mata ut värdena för de två nyckel/värde-resurserna. Genom att läsa nyckelns värde på det här sättet kan den användas på andra platser i mallen.

Snabbstarten använder elementet copy för att skapa flera instanser av nyckel/värde-resurs. Mer information om elementet copyfinns i Resurs iteration i ARM-mallar.

Viktigt!

Den här mallen kräver API-version 2022-05-01 av kontrollplanet för appkonfiguration eller senare. Den här versionen använder reference funktionen för att läsa nyckelvärden. Funktionen listKeyValue som användes för att läsa nyckelvärden i den tidigare versionen är inte tillgänglig från och med version 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')]"
      }
    }
  }
}

Två Azure-resurser definieras i mallen:

Dricks

Resursens keyValues namn är en kombination av nyckel och etikett. Nyckeln och etiketten kopplas av $ avgränsare. Etiketten är valfri. I exemplet ovan skapar resursen keyValues med namn myKey ett nyckelvärde utan etikett.

Procentkodning, även kallat URL-kodning, gör att nycklar eller etiketter kan innehålla tecken som inte tillåts i ARM-mallresursnamn. % är inte heller ett tillåtet tecken, så ~ används i stället. Följ dessa steg för att koda ett namn korrekt:

  1. Använda URL-kodning
  2. Ersätt ~ med ~7E
  3. Ersätt % med ~

Om du till exempel vill skapa ett nyckel/värde-par med nyckelnamn AppName:DbEndpoint och etikettnamn Testska resursnamnet vara AppName~3ADbEndpoint$Test.

Kommentar

App Configuration tillåter nyckelvärdesdataåtkomst via en privat länk från ditt virtuella nätverk. När funktionen är aktiverad nekas som standard alla begäranden om appkonfigurationsdata via det offentliga nätverket. Eftersom ARM-mallen körs utanför ditt virtuella nätverk tillåts inte dataåtkomst från en ARM-mall. Om du vill tillåta dataåtkomst från en ARM-mall när en privat länk används kan du aktivera åtkomst till offentliga nätverk med hjälp av följande Azure CLI-kommando. Det är viktigt att tänka på säkerhetskonsekvenserna av att aktivera åtkomst till offentliga nätverk i det här scenariot.

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

Distribuera mallen

Välj följande bild för att logga in på Azure och öppna en mall. Mallen skapar ett App Configuration Store med två nyckelvärden inuti.

Knapp för att distribuera Resource Manager-mallen till Azure.

Du kan också distribuera mallen med hjälp av följande PowerShell-cmdlet. Nyckelvärdena finns i utdata från PowerShell-konsolen.

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

Granska distribuerade resurser

  1. Logga in på Azure-portalen.
  2. I sökrutan i Azure-portalen skriver du App Configuration. Välj Appkonfiguration i listan.
  3. Välj den nyligen skapade appkonfigurationsresursen.
  4. Under Åtgärder klickar du på Konfigurationsutforskaren.
  5. Kontrollera att det finns två nyckelvärden.

Rensa resurser

När resursgruppen, appkonfigurationsarkivet och alla relaterade resurser inte längre behövs tar du bort den. Om du planerar att använda App Configuration Store i framtiden kan du hoppa över att ta bort det. Om du inte fortsätter att använda det här arkivet tar du bort alla resurser som skapats av den här snabbstarten genom att köra följande cmdlet:

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

Nästa steg

Mer information om hur du lägger till funktionsflagga och Key Vault-referens till ett App Configuration Store finns i arm-mallexemplen nedan.