Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird beschrieben, wie Ausgabewerte in Ihrer Azure Resource Manager-Vorlage (ARM-Vorlage) definiert werden. Sie verwenden Ausgaben, wenn Werte von den bereitgestellten Ressourcen zurückgegeben werden müssen.
Das Format der einzelnen Ausgabewerte muss in einen der Datentypen aufgelöst werden.
Tipp
Bicep wird empfohlen, da sie dieselben Funktionen wie ARM-Vorlagen bietet und die Syntax einfacher zu verwenden ist. Weitere Informationen finden Sie in den Ergebnissen.
Sie sind auf 64 Ausgaben in einer Vorlage beschränkt. Weitere Informationen finden Sie unter Vorlagenbeschränkungen.
Definieren von Ausgabewerten
Im folgenden Beispiel wird gezeigt, wie Sie eine Eigenschaft von einer bereitgestellten Ressource zurückgeben lassen. Fügen Sie der Vorlage den Ausgabeabschnitt hinzu. Der Ausgabewert ruft den vollqualifizierten Domänennamen für eine öffentliche IP-Adresse ab:
"outputs": {
"hostname": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))).dnsSettings.fqdn]"
},
}
Wenn Sie eine Eigenschaft ausgeben müssen, die einen Bindestrich im Namen aufweist, setzen Sie den Namen in eckige Klammern, anstatt die Punktnotation zu verwenden. Verwenden Sie z. B. ['property-name']
statt .property-name
.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"variables": {
"user": {
"user-name": "Test Person"
}
},
"resources": [
],
"outputs": {
"nameResult": {
"type": "string",
"value": "[variables('user')['user-name']]"
}
}
}
Bedingte Ausgabe
Sie können das condition
Element verwenden, um einen Wert bedingt zurückzugeben. In der Regel verwenden Sie eine bedingte Ausgabe, wenn Sie eine Ressource bedingt bereitgestellt haben. Das folgende Beispiel zeigt, wie Sie die Ressourcen-ID für eine öffentliche IP-Adresse bedingt zurückgeben, basierend darauf, ob eine neue bereitgestellt wurde:
"outputs": {
"resourceID": {
"condition": "[equals(parameters('publicIpNewOrExisting'), 'new')]",
"type": "string",
"value": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_name'))]"
}
}
Ein einfaches Beispiel für die bedingte Ausgabe finden Sie in der Vorlage für bedingte Ausgabe.
Dynamische Anzahl von Ausgaben
In einigen Szenarien wissen Sie nicht, wie viele Instanzen eines Werts beim Erstellen der Vorlage zurückgegeben werden müssen. Sie können eine variable Anzahl von Werten zurückgeben, indem Sie die iterative Ausgabe verwenden. Fügen Sie das copy
Element hinzu, um eine Ausgabe zu durchlaufen:
"outputs": {
"storageEndpoints": {
"type": "array",
"copy": {
"count": "[parameters('storageCount')]",
"input": "[reference(concat(copyIndex(), variables('baseName'))).primaryEndpoints.blob]"
}
}
}
Weitere Informationen finden Sie unter Ausgabeiteration in ARM-Vorlagen.
Verknüpfte Vorlagen
Sie können verwandte Vorlagen mithilfe verknüpfter Vorlagen bereitstellen. Verwenden Sie die Funktion in der reference
übergeordneten Vorlage, um den Ausgabewert aus einer verknüpften Vorlage abzurufen. Die Syntax in der übergeordneten Vorlage lautet:
"[reference('<deploymentName>').outputs.<propertyName>.value]"
Das folgende Beispiel zeigt, wie Die IP-Adresse für ein Lastenausgleichsmodul festgelegt wird, indem ein Wert aus einer verknüpften Vorlage abgerufen wird:
"publicIPAddress": {
"id": "[reference('linkedTemplate').outputs.resourceID.value]"
}
Wenn der Eigenschaftenname einen Bindestrich aufweist, verwenden Sie eckige Klammern um den Namen anstelle der Punktnotation.
"publicIPAddress": {
"id": "[reference('linkedTemplate').outputs['resource-ID'].value]"
}
Sie können die reference
Funktion nicht im Ausgabeabschnitt einer geschachtelten Vorlage verwenden. Um die Werte für eine bereitgestellte Ressource in einer geschachtelten Vorlage zurückzugeben, konvertieren Sie Ihre geschachtelte Vorlage in eine verknüpfte Vorlage.
- Die Vorlage für öffentliche IP-Adressen erstellt eine öffentliche IP-Adresse und gibt die Ressourcen-ID aus.
- Die Vorlage für das Lastenausgleichsmodul wird mit der vorherigen Vorlage verknüpft. Sie verwendet beim Erstellen des Lastenausgleichs die Ressourcen-ID in der Ausgabe.
Beispielvorlage
Die folgende Vorlage stellt keine Ressourcen bereit. Es zeigt einige Möglichkeiten zum Zurückgeben von Ausgaben verschiedener Typen:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [],
"outputs": {
"stringOutput": {
"type": "string",
"value": "[deployment().name]"
},
"integerOutput": {
"type": "int",
"value": "[length(environment().authentication.audiences)]"
},
"booleanOutput": {
"type": "bool",
"value": "[contains(deployment().name, 'demo')]"
},
"arrayOutput": {
"type": "array",
"value": "[environment().authentication.audiences]"
},
"objectOutput": {
"type": "object",
"value": "[subscription()]"
}
}
}
Abrufen von Ausgabewerten
Bei erfolgreicher Bereitstellung werden die Ausgabewerte automatisch in den Ergebnissen der Bereitstellung zurückgegeben.
Um Ausgabewerte aus dem Bereitstellungsverlauf abzurufen, können Sie skript verwenden.
(Get-AzResourceGroupDeployment `
-ResourceGroupName <resource-group-name> `
-Name <deployment-name>).Outputs.resourceID.value
Sortieren von Objekten in Ausgaben
In JSON ist ein Objekt eine nicht geordnete Auflistung von null oder mehr Schlüssel-Wert-Paaren. Die Reihenfolge kann je nach Implementierung unterschiedlich sein. Beispielsweise sortiert die Bicep items() -Funktion die Objekte in der alphabetischen Reihenfolge. An anderen Stellen kann die ursprüngliche Reihenfolge beibehalten werden. Aufgrund dieses Nicht-Determinismus sollten Sie beim Schreiben von Code, der mit den Parametern und Ausgaben der Bereitstellung interagiert, keine Annahmen über die Reihenfolge der Objektschlüssel anstellen.
Nächste Schritte
Informationen zu den verfügbaren Eigenschaften für Ausgaben finden Sie in der Struktur und Syntax von ARM-Vorlagen.