Resources uitbreiden met aangepaste resourceproviders
In deze zelfstudie implementeert u een aangepaste resourceprovider in Azure waarmee de Azure Resource Manager-API wordt uitgebreid met het resourcetype Microsoft.CustomProviders/associations. In de zelfstudie ziet u hoe u bestaande resources uitbreidt die zich buiten de resourcegroep bevinden waarin het exemplaar van de aangepaste resourceprovider zich bevindt. In deze zelfstudie maakt de aangepaste resourceprovider gebruik van een logische app van Azure, maar u kunt elk openbaar API-eindpunt gebruiken.
Vereisten
Als u deze zelfstudie wilt voltooien, controleert u het volgende:
- De mogelijkheden van aangepaste Azure-resourceproviders.
- Basisinformatie over het onboarden van resources met aangepaste resourceproviders.
Aan de slag met het onboarden van resources
In deze zelfstudie zijn er twee onderdelen die moeten worden geïmplementeerd: de aangepaste resourceprovider en de koppeling. Om het proces te vereenvoudigen, kunt u desgewenst één sjabloon gebruiken waarmee beide onderdelen worden geïmplementeerd.
De sjabloon maakt gebruik van deze resources:
- 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')]"
}
}
}
De infrastructuur van de aangepaste resourceprovider implementeren
In het eerste deel van de sjabloon wordt de infrastructuur van de aangepaste resourceprovider geïmplementeerd. Deze infrastructuur definieert het effect van de koppelingsresource. Als u niet bekend bent met aangepaste resourceproviders, raadpleegt u Overzicht van aangepaste resourceproviders van Azure.
We gaan de infrastructuur van de aangepaste resourceprovider implementeren. Kopieer, sla de voorgaande sjabloon op en implementeer deze, of volg en implementeer de infrastructuur met behulp van de Azure Portal.
Ga naar Azure Portal.
Zoek naar sjablonen in Azure-services of via het zoekvak:
Selecteer Toevoegen in het deelvenster Sjablonen:
Geef onder Algemeen waarden op voor Naam en Beschrijving voor de nieuwe sjabloon:
Maak de Resource Manager-sjabloon door de JSON-sjabloon te kopiëren vanuit de sectie 'Aan de slag met het onboarden van resources' in dit artikel:
Selecteer Toevoegen om de sjabloon te maken. Als de nieuwe sjabloon niet wordt weergegeven, selecteert u Vernieuwen.
Selecteer de sjabloon die u zojuist hebt gemaakt en selecteer Implementeren:
Voer de instellingen voor de vereiste velden in en selecteer vervolgens het abonnement en de resourcegroep. U kunt het selectievakje Id aangepaste resourceprovider leeg laten.
Naam van de instelling Vereist? Beschrijving Locatie Ja De locatie voor de resources in de sjabloon. Naam van logische app No De naam van de logische app. Naam van aangepaste resourceprovider No De naam van de aangepaste resourceprovider. Id van aangepaste resourceprovider No Een bestaande aangepaste resourceprovider die ondersteuning biedt voor de koppelingsresource. Als u hier een waarde opgeeft, worden de implementatie van de logische app en de aangepaste resourceprovider overgeslagen. Naam van koppeling No De naam van de koppelingsresource. Voorbeeldparameters:
Ga naar de implementatie en wacht tot deze voltooid is. Er verschijnt een scherm dat er ongeveer als volgt uitziet. U ziet de nieuwe koppelingsresource als uitvoer:
Hier ziet u de resourcegroep, met Verborgen items weergeven geselecteerd:
Bekijk het tabblad Uitvoeringsgeschiedenis van de logische app om de aanroepen te zien voor het maken van de koppeling:
Aanvullende koppelingen implementeren
Nadat u de infrastructuur van de aangepaste resourceprovider hebt ingesteld, kunt u eenvoudig meer koppelingen implementeren. De resourcegroep voor aanvullende koppelingen hoeft niet hetzelfde te zijn als de resourcegroep waarin u de infrastructuur van de aangepaste resourceprovider hebt geïmplementeerd. Als u een koppeling wilt maken, moet u de machtigingen Microsoft.CustomProviders/resourceproviders/write hebben voor de id van de opgegeven aangepaste resourceprovider.
Ga naar de aangepaste resourceprovider Microsoft.CustomProviders/resourceProviders in de resourcegroep van de vorige implementatie. U moet het selectievakje Verborgen typen weergeven inschakelen:
Kopieer de eigenschap Resource-id van de aangepaste resourceprovider.
Zoek naar sjablonen in Azure-services of via het zoekvak:
Selecteer de sjabloon die u eerder hebt gemaakt en selecteer vervolgens Implementeren:
Voer de instellingen voor de vereiste velden in en selecteer vervolgens het abonnement en een andere resourcegroep. Voer voor de instelling Aangepaste resourceprovider-id de resource-id in die u hebt gekopieerd uit de aangepaste resourceprovider die u eerder hebt geïmplementeerd.
Ga naar de implementatie en wacht tot deze voltooid is. Nu moet alleen de resource voor de nieuwe koppeling worden geïmplementeerd:
U kunt teruggaan naar de uitvoeringsgeschiedenis van de logische app en zien dat er een andere aanroep is gedaan naar de logische app. U kunt de logische app bijwerken om extra functionaliteit toe te voegen voor elke gemaakte koppeling.
Volgende stappen
In dit artikel hebt u een aangepaste resourceprovider geïmplementeerd in Azure waarmee de Azure Resource Manager-API wordt uitgebreid met het resourcetype Microsoft.CustomProviders/associates. Zie voor meer informatie over aangepaste resourceproviders: