Schnellstart: Erstellen eines Azure App Configuration-Speichers per ARM-Vorlage

In dieser Schnellstartanleitung wird Folgendes beschrieben:

  • Bereitstellen eines App Configuration-Speichers mithilfe einer Azure Resource Manager-Vorlage (ARM-Vorlage).
  • Erstellen von Schlüsselwerten in einem App Configuration-Speicher per ARM-Vorlage.
  • Lesen von Schlüsselwerten in einem App Configuration-Speicher per ARM-Vorlage.

Tipp

Featureflags und Key Vault-Verweise sind spezielle Typen von Schlüsselwerten. Sehen Sie sich die Nächsten Schritte an, um Beispiele für deren Erstellung mit der ARM-Vorlage zu finden.

Eine Azure Resource Manager-Vorlage ist eine JSON-Datei (JavaScript Object Notation), die die Infrastruktur und die Konfiguration für Ihr Projekt definiert. Die Vorlage verwendet eine deklarative Syntax. Sie beschreiben Ihre geplante Bereitstellung, ohne die Abfolge der Programmierbefehle zum Erstellen der Bereitstellung zu schreiben.

Wenn Ihre Umgebung die Voraussetzungen erfüllt und Sie mit der Verwendung von ARM-Vorlagen vertraut sind, klicken Sie auf die Schaltfläche In Azure bereitstellen. Die Vorlage wird im Azure-Portal geöffnet.

Schaltfläche zum Bereitstellen der Resource Manager-Vorlage in Azure.

Voraussetzungen

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Autorisierung

Die Verwaltung der Azure App-Konfigurationsressource innerhalb einer ARM-Vorlage erfordert eine Azure Resource Manager-Rolle, z. B. Mitwirkender oder Besitzer. Für den Zugriff auf Azure App-Konfigurationsdaten (Schlüsselwerte, Momentaufnahmen) ist die Azure Resource Manager-Rolle und die Azure App-Konfigurationsdatenebenenrolle im Pass-Through-ARM-Authentifizierungsmodus erforderlich.

Überprüfen der Vorlage

Die in dieser Schnellstartanleitung verwendete Vorlage stammt von der Seite mit den Azure-Schnellstartvorlagen. Hiermit wird ein neuer App Configuration-Speicher erstellt, der zwei Schlüsselwerte enthält. Anschließend wird die Funktion reference verwendet, um die Werte der beiden Schlüsselwertressourcen auszugeben. Wenn der Wert des Schlüssels auf diese Weise gelesen wird, kann er auch an anderen Stellen der Vorlage verwendet werden.

In der Schnellstartanleitung wird das Element copy verwendet, um mehrere Instanzen der Schlüsselwertressource zu erstellen. Weitere Informationen zum Element copy finden Sie unter Ressourceniteration in ARM-Vorlagen.

Wichtig

Für diese Vorlage ist ein App Configuration-Ressourcenanbieter mit Version 2020-07-01-preview oder höher erforderlich. In dieser Version wird die Funktion reference zum Lesen von Schlüsselwerten verwendet. Die Funktion listKeyValue, die in der vorherigen Version zum Lesen von Schlüsselwerten verwendet wurde, ist ab Version 2020-07-01-preview nicht mehr verfügbar.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.5.6.12127",
      "templateHash": "2173262573838896712"
    }
  },
  "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])).value]"
    },
    "reference_key_value_object": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.AppConfiguration/configurationStores/keyValues', parameters('configStoreName'), parameters('keyValueNames')[1]), '2021-10-01-preview', 'full')]"
    }
  }
}

Zwei Azure-Ressourcen sind in der Vorlage definiert:

Tipp

Der Name der Ressource keyValues ist eine Kombination aus Schlüssel und Bezeichnung. Der Schlüssel und die Bezeichnung werden mit dem Trennzeichen $ verknüpft. Die Bezeichnung ist optional. Im obigen Beispiel wird von der Ressource keyValues mit dem Namen myKey ein Schlüsselwert ohne Bezeichnung erstellt.

Bei der Prozentcodierung, die auch als URL-Codierung bezeichnet wird, können Schlüssel oder Bezeichnungen Zeichen enthalten, die in Ressourcennamen von ARM-Vorlagen nicht zulässig sind. Da auch % kein zulässiges Zeichen ist, wird stattdessen ~ verwendet. Führen Sie die folgenden Schritte aus, um einen Namen richtig zu codieren:

  1. Anwenden der URL-Codierung
  2. Ersetzen Sie ~ durch ~7E.
  3. Ersetzen Sie % durch ~.

Um beispielsweise ein Schlüssel-Wert-Paar mit dem Schlüsselnamen AppName:DbEndpoint und der Bezeichnung Test zu erstellen, sollte der Ressourcenname AppName~3ADbEndpoint$Test lauten.

Hinweis

App Configuration ermöglicht den Schlüssel-Wert-Datenzugriff über eine private Verbindung von Ihrem virtuellen Netzwerk. Wenn das Feature aktiviert ist, werden alle Anforderungen für Ihre App Configuration-Daten über das öffentliche Netzwerk standardmäßig verweigert. Da die ARM-Vorlage außerhalb des virtuellen Netzwerks ausgeführt wird, ist der Datenzugriff über eine ARM-Vorlage nicht zulässig. Um den Datenzugriff über eine ARM-Vorlage bei Verwendung einer privaten Verbindung zuzulassen, können Sie den Zugriff auf das öffentliche Netzwerk mithilfe des folgenden Azure CLI-Befehls aktivieren. In diesem Szenario ist es wichtig, die Sicherheitsauswirkungen zu berücksichtigen, die sich durch die Aktivierung des Zugriffs auf das öffentliche Netzwerk ergeben.

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

Bereitstellen der Vorlage

Klicken Sie auf das folgende Bild, um sich bei Azure anzumelden und eine Vorlage zu öffnen. Mit der Vorlage wird ein App Configuration-Speicher erstellt, der zwei Schlüsselwerte enthält.

Schaltfläche zum Bereitstellen der Resource Manager-Vorlage in Azure.

Sie können die Vorlage auch mit dem folgenden PowerShell-Cmdlet bereitstellen. Die Schlüsselwerte sind in der Ausgabe der PowerShell-Konsole enthalten.

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

Überprüfen der bereitgestellten Ressourcen

  1. Melden Sie sich beim Azure-Portal an.
  2. Geben Sie im Azure-Portal im Suchfeld den Suchbegriff App Configuration ein. Wählen Sie in der Liste den Eintrag App Configuration aus.
  3. Wählen Sie die neu erstellte App Configuration-Ressource aus.
  4. Klicken Sie unter Vorgänge auf Konfigurations-Explorer.
  5. Vergewissern Sie sich, dass zwei Schlüsselwerte vorhanden sind.

Bereinigen von Ressourcen

Löschen Sie die Ressourcengruppe, den App Configuration-Speicher und alle zugehörigen Ressourcen, wenn Sie sie nicht mehr benötigen. Falls Sie planen, den App Configuration-Speicher weiter zu nutzen, können Sie das Löschen überspringen. Wenn Sie diesen Speicher nicht weiter verwenden möchten, löschen Sie alle in diesem Schnellstart erstellten Ressourcen, indem Sie das folgende Cmdlet ausführen:

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

Nächste Schritte

Sehen Sie sich die unten angegebenen Beispiele für ARM-Vorlagen an, um sich über das Hinzufügen von Featureflags zu informieren und sich mit dem App Configuration-Speicher vertraut zu machen.