Erweitern von Ressourcen mit benutzerdefinierten Ressourcenanbietern
In diesem Tutorial stellen Sie einen benutzerdefinierten Ressourcenanbieter für Azure bereit, der die Azure Resource Manager-API um den Ressourcentyp „Microsoft.CustomProviders/associations“ erweitert. In diesem Tutorial wird gezeigt, wie Sie bestehende Ressourcen, die sich außerhalb der Ressourcengruppe befinden, in der sich die benutzerdefinierte Ressourcenanbieterinstanz befindet, erweitern können. In diesem Tutorial wird der benutzerdefinierte Ressourcenanbieter von einer Azure-Logik-App unterstützt, aber Sie können jeden öffentlichen API-Endpunkt verwenden.
Voraussetzungen
Damit Sie dieses Tutorial durcharbeiten können, sollten Sie folgende Ressourcen überprüfen:
- Funktionen von benutzerdefinierten Azure-Ressourcenanbietern.
- Grundlegende Informationen zum Onboarding von Ressourcen mit benutzerdefinierten Ressourcenanbietern.
Erste Schritte für das Onboarding von Ressourcen
In diesem Tutorial gibt es zwei Komponenten, die bereitgestellt werden müssen: der benutzerdefinierte Ressourcenanbieter und die Zuordnung. Sie können zur Vereinfachung des Prozesses optional eine einzelne Vorlage verwenden, die beides bereitstellt.
Die Vorlage verwendet folgende Ressourcen:
- Microsoft.CustomProviders/resourceProviders
- Microsoft.Logic/workflows
- Microsoft.CustomProviders/associations
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"allowedValues": [
"australiaeast",
"eastus",
"westeurope"
],
"metadata": {
"description": "Location for the resources."
}
},
"logicAppName": {
"type": "string",
"defaultValue": "[uniqueString(resourceGroup().id)]",
"metadata": {
"description": "Name of the logic app to be created."
}
},
"customResourceProviderName": {
"type": "string",
"defaultValue": "[uniqueString(resourceGroup().id)]",
"metadata": {
"description": "Name of the custom resource provider to be created."
}
},
"customResourceProviderId": {
"type": "string",
"defaultValue": "",
"metadata": {
"description": "The resource ID of an existing custom resource provider. Provide this to skip deployment of new logic app and custom resource provider."
}
},
"associationName": {
"type": "string",
"defaultValue": "myAssociationResource",
"metadata": {
"description": "Name of the custom resource that is being created."
}
}
},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"condition": "[empty(parameters('customResourceProviderId'))]",
"name": "customProviderInfrastructureTemplate",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"logicAppName": {
"type": "string",
"defaultValue": "[parameters('logicAppName')]"
}
},
"resources": [
{
"type": "Microsoft.Logic/workflows",
"apiVersion": "2019-05-01",
"name": "[parameters('logicAppName')]",
"location": "[parameters('location')]",
"properties": {
"state": "Enabled",
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
"Switch": {
"cases": {
"Case": {
"actions": {
"CreateCustomResource": {
"inputs": {
"body": {
"properties": "@addProperty(triggerBody().Body['properties'], 'myDynamicProperty', 'myDynamicValue')"
},
"statusCode": 200
},
"kind": "Http",
"type": "Response"
}
},
"case": "CREATE"
}
},
"default": {
"actions": {
"DefaultHttpResponse": {
"inputs": {
"statusCode": 200
},
"kind": "Http",
"type": "Response"
}
}
},
"expression": "@triggerBody().operationType",
"type": "Switch"
}
},
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {},
"triggers": {
"CustomProviderWebhook": {
"inputs": {
"schema": {}
},
"kind": "Http",
"type": "Request"
}
}
}
}
},
{
"type": "Microsoft.CustomProviders/resourceProviders",
"apiVersion": "2018-09-01-preview",
"name": "[parameters('customResourceProviderName')]",
"location": "[parameters('location')]",
"properties": {
"resourceTypes": [
{
"name": "associations",
"mode": "Secure",
"routingType": "Webhook,Cache,Extension",
"endpoint": "[[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows', parameters('logicAppName')), '/triggers/CustomProviderWebhook'), '2019-05-01').value]"
}
]
}
}
],
"outputs": {
"customProviderResourceId": {
"type": "string",
"value": "[resourceId('Microsoft.CustomProviders/resourceProviders', parameters('customResourceProviderName'))]"
}
}
}
}
},
{
"type": "Microsoft.CustomProviders/associations",
"apiVersion": "2018-09-01-preview",
"name": "[parameters('associationName')]",
"location": "global",
"properties": {
"targetResourceId": "[if(empty(parameters('customResourceProviderId')), reference('customProviderInfrastructureTemplate').outputs.customProviderResourceId.value, parameters('customResourceProviderId'))]",
"myCustomInputProperty": "myCustomInputValue",
"myCustomInputObject": {
"Property1": "Value1"
}
}
}
],
"outputs": {
"associationResource": {
"type": "object",
"value": "[reference(parameters('associationName'), '2018-09-01-preview', 'Full')]"
}
}
}
Bereitstellen der Infrastruktur für benutzerdefinierte Ressourcenanbieter
Der erste Teil der Vorlage stellt die Infrastruktur des benutzerdefinierten Ressourcenanbieters bereit. Diese Infrastruktur definiert die Auswirkung der Zuordnungsressource. Wenn Sie mit benutzerdefinierten Ressourcenanbietern noch nicht vertraut sind, finden Sie weitere Informationen in der Übersicht über benutzerdefinierte Azure-Ressourcenanbieter.
Stellen wir die Infrastruktur des benutzerdefinierten Ressourcenanbieters bereit. Sie können die vorherige Vorlage entweder kopieren, speichern und bereitstellen oder mithilfe des Azure-Portals die Infrastruktur mitverfolgen und bereitstellen.
Öffnen Sie das Azure-Portal.
Suchen Sie in Alle Dienste nach Vorlagen, oder verwenden Sie das Hauptsuchfeld:
Wählen Sie im Bereich Vorlagen die Option Hinzufügen aus:
Geben Sie unter Allgemein einen Namen und eine Beschreibung für die neue Vorlage ein:
Erstellen Sie die Resource Manager-Vorlage, indem Sie sie in die JSON-Vorlage aus dem Abschnitt „Erste Schritte für das Onboarding von Ressourcen“ in diesem Artikel kopieren:
Wählen Sie Hinzufügen aus, um die Vorlage zu erstellen. Wenn die neue Vorlage nicht angezeigt wird, wählen Sie Aktualisieren aus.
Wählen Sie die neu erstellte Vorlage und anschließend Bereitstellen aus:
Geben Sie die Einstellungen für die erforderlichen Felder ein, und wählen Sie dann das Abonnement und die Ressourcengruppe aus. Sie können das Feld für die ID des benutzerdefinierten Ressourcenanbieters leer lassen.
Name der Einstellung Erforderlich? BESCHREIBUNG Standort Ja Der Standort für die Ressourcen in der Vorlage. Logik-App-Name Nein Der Name der Logik-App. Name des benutzerdefinierten Ressourcenanbieters Nein Der Name des benutzerdefinierten Ressourcenanbieters. ID des benutzerdefinierten Ressourcenanbieters Nein Ein vorhandener benutzerdefinierter Ressourcenanbieter, der die Zuordnungsressource unterstützt. Wenn Sie hier einen Wert angeben, werden die Logik-App und die benutzerdefinierte Ressourcenanbieterbereitstellung übersprungen. Zuordnungsname Nein Der Name der Zuordnungsressource. Beispielparameter:
Wechseln Sie zur Bereitstellung, und warten Sie, bis sie abgeschlossen ist. Es sollte ein Screenshot angezeigt werden, der in etwa wie folgt aussieht. Die neue Zuordnungsressource sollte als Ausgabe angezeigt werden:
Hier ist die Ressourcengruppe mit der Auswahl Ausgeblendete Typen anzeigen:
Untersuchen Sie die Registerkarte Ausführungsverlauf der Logik-App, um die Aufrufe für die Erstellung der Zuordnung anzuzeigen:
Bereitstellen zusätzlicher Zuordnungen
Nachdem Sie die Infrastruktur des benutzerdefinierten Ressourcenanbieters eingerichtet haben, können Sie problemlos weitere Zuordnungen bereitstellen. Die Ressourcengruppe für zusätzliche Zuordnungen muss nicht mit der Ressourcengruppe übereinstimmen, in der Sie die Infrastruktur des benutzerdefinierten Ressourcenanbieters bereitgestellt haben. Um eine Zuordnung zu erstellen, benötigen Sie die Berechtigungen „Microsoft.CustomProviders/resourceproviders/write“ für die angegebene ID des benutzerdefinierten Ressourcenanbieters.
Wechseln Sie zur Ressource Microsoft.CustomProviders/resourceProviders des benutzerdefinierten Ressourcenanbieters in der Ressourcengruppe der vorherigen Bereitstellung. Sie müssen das Kontrollkästchen Ausgeblendete Typen anzeigen aktivieren:
Kopieren Sie die Ressourcen-ID-Eigenschaft des benutzerdefinierten Ressourcenanbieters.
Suchen Sie in Alle Dienste nach Vorlagen, oder verwenden Sie das Hauptsuchfeld:
Wählen Sie die zuvor erstellte Vorlage und anschließend Bereitstellen aus:
Geben Sie die Einstellungen für die erforderlichen Felder ein, und wählen Sie dann das Abonnement und eine andere Ressourcengruppe aus. Geben Sie für die Einstellung für die ID des benutzerdefinierten Ressourcenanbieters die Ressourcen-ID ein, die Sie von dem benutzerdefinierten und zuvor bereitgestellten Ressourcenanbieter kopiert haben.
Wechseln Sie zur Bereitstellung, und warten Sie, bis sie abgeschlossen ist. Es sollte jetzt nur noch die neue Zuordnungsressource bereitgestellt werden:
Sie können zum Ausführungsverlauf der Logik-App zurückkehren und werden feststellen, dass ein weiterer Aufruf an die Logik-App erfolgt ist. Sie können die Logik-App aktualisieren, um zusätzliche Funktionen für jede erstellte Zuordnung zu erweitern.
Nächste Schritte
In diesem Artikel haben Sie einen benutzerdefinierten Ressourcenanbieter für Azure bereitgestellt, der die Azure Resource Manager-API um den Ressourcentyp „Microsoft.CustomProviders/associations“ erweitert. Weitere Informationen zu benutzerdefinierten Ressourcenanbietern finden Sie unter: