Rozszerzanie zasobów za pomocą niestandardowych dostawców zasobów
W tym samouczku wdrożysz niestandardowego dostawcę zasobów na platformie Azure, który rozszerza interfejs API usługi Azure Resource Manager przy użyciu typu zasobu Microsoft.CustomProviders/associations. W samouczku pokazano, jak rozszerzyć istniejące zasoby znajdujące się poza grupą zasobów, w której znajduje się wystąpienie niestandardowego dostawcy zasobów. W tym samouczku niestandardowy dostawca zasobów jest obsługiwany przez aplikację logiki platformy Azure, ale możesz użyć dowolnego publicznego punktu końcowego interfejsu API.
Wymagania wstępne
Aby ukończyć ten samouczek, zapoznaj się z następującymi artykułami:
- Możliwości niestandardowych dostawców zasobów platformy Azure.
- Podstawowe informacje o dołączaniu zasobów za pomocą niestandardowych dostawców zasobów.
Wprowadzenie do dołączania zasobów
W tym samouczku istnieją dwa elementy, które należy wdrożyć: niestandardowy dostawca zasobów i skojarzenie. Aby ułatwić proces, możesz opcjonalnie użyć pojedynczego szablonu, który wdraża oba te elementy.
Szablon będzie używać następujących zasobów:
- 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')]"
}
}
}
Wdrażanie niestandardowej infrastruktury dostawcy zasobów
Pierwsza część szablonu wdraża niestandardową infrastrukturę dostawcy zasobów. Ta infrastruktura definiuje wpływ zasobu skojarzeń. Jeśli nie znasz niestandardowych dostawców zasobów, zobacz Omówienie niestandardowych dostawców zasobów platformy Azure.
Wdróżmy niestandardową infrastrukturę dostawcy zasobów. Skopiuj, zapisz i wdróż powyższy szablon lub postępuj zgodnie z instrukcjami i wdróż infrastrukturę przy użyciu Azure Portal.
Przejdź do witryny Azure Portal.
Wyszukaj szablony we wszystkich usługach lub przy użyciu głównego pola wyszukiwania:
Wybierz pozycję Dodaj w okienku Szablony :
W obszarze Ogólne wprowadź nazwę i opis nowego szablonu:
Utwórz szablon Resource Manager, kopiując go w szablonie JSON z sekcji "Wprowadzenie do dołączania zasobów" w tym artykule:
Wybierz pozycję Dodaj , aby utworzyć szablon. Jeśli nowy szablon nie zostanie wyświetlony, wybierz pozycję Odśwież.
Wybierz nowo utworzony szablon, a następnie wybierz pozycję Wdróż:
Wprowadź ustawienia wymaganych pól, a następnie wybierz subskrypcję i grupę zasobów. Pole Identyfikator niestandardowego dostawcy zasobów można pozostawić puste.
Nazwa ustawienia Wymagane? Opis Lokalizacja Tak Lokalizacja zasobów w szablonie. Nazwa aplikacji logiki Nie Nazwa aplikacji logiki. Nazwa niestandardowego dostawcy zasobów Nie Nazwa niestandardowego dostawcy zasobów. Identyfikator niestandardowego dostawcy zasobów Nie Istniejący niestandardowy dostawca zasobów obsługujący zasób skojarzenia. Jeśli określisz w tym miejscu wartość, aplikacja logiki i wdrożenie niestandardowego dostawcy zasobów zostaną pominięte. Nazwa skojarzenia Nie Nazwa zasobu skojarzenia. Przykładowe parametry:
Przejdź do wdrożenia i poczekaj na zakończenie. Powinien zostać wyświetlony podobny do poniższego zrzutu ekranu. Nowy zasób skojarzenia powinien być widoczny jako dane wyjściowe:
Oto grupa zasobów z wybraną pozycją Pokaż ukryte typy :
Zapoznaj się z kartą Historia przebiegów aplikacji logiki, aby wyświetlić wywołania tworzenia skojarzenia:
Wdrażanie dodatkowych skojarzeń
Po skonfigurowaniu niestandardowej infrastruktury dostawcy zasobów można łatwo wdrożyć więcej skojarzeń. Grupa zasobów dla dodatkowych skojarzeń nie musi być taka sama jak grupa zasobów, w której wdrożono niestandardową infrastrukturę dostawcy zasobów. Aby utworzyć skojarzenie, musisz mieć uprawnienia Microsoft.CustomProviders/resourceproviders/write dla określonego identyfikatora niestandardowego dostawcy zasobów.
Przejdź do zasobu niestandardowego dostawcy zasobów Microsoft.CustomProviders/resourceProviders w grupie zasobów poprzedniego wdrożenia. Musisz zaznaczyć pole wyboru Pokaż ukryte typy :
Skopiuj właściwość Resource ID niestandardowego dostawcy zasobów.
Wyszukaj szablony we wszystkich usługach lub przy użyciu głównego pola wyszukiwania:
Wybierz wcześniej utworzony szablon, a następnie wybierz pozycję Wdróż:
Wprowadź ustawienia wymaganych pól, a następnie wybierz subskrypcję i inną grupę zasobów. Dla ustawienia Identyfikator niestandardowego dostawcy zasobów wprowadź identyfikator zasobu skopiowany z wdrożonego wcześniej dostawcy zasobów niestandardowych.
Przejdź do wdrożenia i poczekaj na zakończenie. Powinien on teraz wdrażać tylko nowy zasób skojarzeń:
Możesz wrócić do historii uruchamiania aplikacji logiki i zobaczyć, że do aplikacji logiki zostało wykonane kolejne wywołanie. Możesz zaktualizować aplikację logiki, aby rozszerzyć dodatkowe funkcje dla każdego utworzonego skojarzenia.
Następne kroki
W tym artykule wdrożono niestandardowego dostawcę zasobów na platformie Azure, który rozszerza interfejs API usługi Azure Resource Manager o typ zasobu Microsoft.CustomProviders/associates. Aby kontynuować poznawanie niestandardowych dostawców zasobów, zobacz: