Samouczek: tworzenie aplikacji zarządzanej za pomocą akcji niestandardowych i zasobów
W tym samouczku utworzysz własną aplikację zarządzaną przy użyciu akcji niestandardowych i zasobów. Aplikacja zarządzana zawiera akcję niestandardową na Overview
stronie, niestandardowy typ zasobu wyświetlany jako oddzielny element menu w Table of Content
programie i niestandardową akcję kontekstową na stronie zasobu niestandardowego.
Ten samouczek obejmuje następujące kroki:
- Tworzenie pliku definicji interfejsu użytkownika do tworzenia wystąpienia aplikacji zarządzanej
- Tworzenie szablonu wdrożenia przy użyciu niestandardowego dostawcy platformy Azure, konta usługi Azure Storage i funkcji platformy Azure
- Tworzenie artefaktu definicji widoku z akcjami niestandardowymi i zasobami
- Wdrażanie definicji aplikacji zarządzanej
- Wdrażanie wystąpienia aplikacji zarządzanej
- Wykonywanie akcji niestandardowych i tworzenie zasobów niestandardowych
Wymagania wstępne
Aby ukończyć ten samouczek, musisz wiedzieć:
- Jak utworzyć i opublikować definicję aplikacji zarządzanej.
- Jak wdrożyć aplikację wykazu usług za pośrednictwem witryny Azure Portal.
- Jak utworzyć interfejs użytkownika witryny Azure Portal dla aplikacji zarządzanej.
- Wyświetlanie możliwości artefaktu definicji.
- Możliwości dostawcy niestandardowego platformy Azure.
Definicja interfejsu użytkownika
W tym samouczku utworzysz aplikację zarządzaną i jej zarządzaną grupę zasobów zawiera niestandardowe wystąpienie dostawcy, konto magazynu i funkcję. Funkcja platformy Azure używana w tym przykładzie implementuje interfejs API, który obsługuje operacje niestandardowego dostawcy dla akcji i zasobów. Konto usługi Azure Storage jest używane jako podstawowy magazyn dla zasobów dostawcy niestandardowego.
Definicja interfejsu użytkownika do tworzenia wystąpienia aplikacji zarządzanej obejmuje funcname
elementy wejściowe i storagename
. Nazwa konta magazynu i nazwa funkcji muszą być globalnie unikatowe. Domyślnie pliki funkcji są wdrażane z przykładowego pakietu funkcji, ale można je zmienić, dodając element wejściowy linku pakietu w createUiDefinition.json:
{
"name": "funcname",
"type": "Microsoft.Common.TextBox",
"label": "Name of the function to be created",
"toolTip": "Name of the function to be created",
"visible": true,
"constraints": {
"required": true
}
},
{
"name": "storagename",
"type": "Microsoft.Common.TextBox",
"label": "Name of the storage to be created",
"toolTip": "Name of the storage to be created",
"visible": true,
"constraints": {
"required": true
}
},
{
"name": "zipFileBlobUri",
"type": "Microsoft.Common.TextBox",
"defaultValue": "https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.customproviders/custom-rp-with-function/artifacts/functionzip/functionpackage.zip",
"label": "The Uri to the uploaded function zip file",
"toolTip": "The Uri to the uploaded function zip file",
"visible": true
}
Dane wyjściowe w createUiDefinition.json:
"funcname": "[steps('applicationSettings').funcname]",
"storageName": "[steps('applicationSettings').storagename]",
"zipFileBlobUri": "[steps('applicationSettings').zipFileBlobUri]"
Kompletny przykład createUiDefinition.json można znaleźć w artykule Reference: User interface elements artifacts (Dokumentacja: artefakty elementów interfejsu użytkownika).
Szablon z dostawcą niestandardowym
Aby utworzyć wystąpienie aplikacji zarządzanej z dostawcą niestandardowym, należy zdefiniować zasób dostawcy niestandardowego o nazwie publicznej i wpisać Microsoft.CustomProviders/resourceProviders
w mainTemplate.json. W tym zasobie zdefiniujesz typy zasobów i akcje dla usługi. Aby wdrożyć wystąpienia funkcji platformy Azure i konta usługi Azure Storage, zdefiniuj zasoby typu Microsoft.Web/sites
i Microsoft.Storage/storageAccounts
odpowiednio.
W tym samouczku utworzysz jeden users
typ zasobu, ping
akcję niestandardową i users/contextAction
akcję niestandardową wykonywaną w kontekście zasobu niestandardowego users
. Dla każdego typu zasobu i akcji podaj punkt końcowy wskazujący funkcję o nazwie podanej w createUiDefinition.json. Określ wartości routingType
dla Proxy,Cache
typów zasobów i Proxy
dla akcji:
{
"apiVersion": "[variables('customrpApiversion')]",
"type": "Microsoft.CustomProviders/resourceProviders",
"name": "[variables('customProviderName')]",
"location": "[parameters('location')]",
"properties": {
"actions": [
{
"name": "ping",
"routingType": "Proxy",
"endpoint": "[listSecrets(resourceId('Microsoft.Web/sites/functions', parameters('funcname'), 'HttpTrigger1'), '2018-02-01').trigger_url]"
},
{
"name": "users/contextAction",
"routingType": "Proxy",
"endpoint": "[listSecrets(resourceId('Microsoft.Web/sites/functions', parameters('funcname'), 'HttpTrigger1'), '2018-02-01').trigger_url]"
}
],
"resourceTypes": [
{
"name": "users",
"routingType": "Proxy,Cache",
"endpoint": "[listSecrets(resourceId('Microsoft.Web/sites/functions', parameters('funcname'), 'HttpTrigger1'), '2018-02-01').trigger_url]"
}
]
},
"dependsOn": [
"[concat('Microsoft.Web/sites/',parameters('funcname'))]"
]
}
Kompletny przykład mainTemplate.json można znaleźć w artykule Reference: Deployment template artifact (Dokumentacja: artefakt szablonu wdrożenia).
Wyświetlanie artefaktu definicji
Aby zdefiniować interfejs użytkownika zawierający akcje niestandardowe i zasoby niestandardowe w aplikacji zarządzanej, musisz utworzyć artefakt viewDefinition.json . Aby uzyskać więcej informacji na temat artefaktu definicji widoku, zobacz Wyświetlanie artefaktu definicji w aplikacjach zarządzanych platformy Azure.
W tym samouczku zdefiniujesz następujące elementy:
- Strona Przegląd z przyciskiem paska narzędzi, który reprezentuje akcję
TestAction
niestandardową z podstawowymi danymi wejściowymi tekstowymi. - Strona Użytkownicy reprezentująca niestandardowy typ
users
zasobu. - Niestandardowa akcja
users/contextAction
zasobu na stronie Użytkownicy , która będzie wykonywana w kontekście niestandardowego zasobu typuusers
.
W poniższym przykładzie przedstawiono konfigurację widoku dla strony "Przegląd":
{
"kind": "Overview",
"properties": {
"header": "Welcome to your Demo Azure Managed Application",
"description": "This Managed application with Custom Provider is for demo purposes only.",
"commands": [
{
"displayName": "Ping Action",
"path": "/customping",
"icon": "LaunchCurrent"
}
]
}
}
Poniższy przykład obejmuje konfigurację strony Zasoby użytkownicy z niestandardową akcją zasobu:
{
"kind": "CustomResources",
"properties": {
"displayName": "Users",
"version": "1.0.0.0",
"resourceType": "users",
"createUIDefinition": {},
"commands": [
{
"displayName": "Custom Context Action",
"path": "users/contextAction",
"icon": "Start"
}
],
"columns": [
{
"key": "properties.FullName",
"displayName": "Full Name"
},
{
"key": "properties.Location",
"displayName": "Location",
"optional": true
}
]
}
}
Kompletny przykład viewDefinition.json można znaleźć w artykule Dokumentacja: Wyświetlanie artefaktu definicji.
Definicja aplikacji zarządzanej
Spakuj następujące artefakty aplikacji zarządzanej, aby spakować archiwum i przekazać je do magazynu:
- createUiDefinition.json
- mainTemplate.json
- viewDefinition.json
Wszystkie pliki muszą być na poziomie głównym. Pakiet z artefaktami można przechowywać w dowolnym magazynie, na przykład w obiekcie blob usługi GitHub lub obiekcie blob konta usługi Azure Storage. Oto skrypt umożliwiający przekazanie pakietu aplikacji na konto magazynu:
$resourceGroup="appResourcesGroup"
$storageName="mystorageaccount$RANDOM"
# Sign in to your Azure subscription
Connect-AzAccount
# Create resource group for managed application definition and application package
New-AzResourceGroup -Name $resourceGroup -Location eastus
# Create storage account for a package with application artifacts
$storageAccount=New-AzStorageAccount `
-ResourceGroupName $resourceGroup `
-Name $storageName `
-SkuName Standard_LRS `
-Location eastus `
$ctx=$storageAccount.Context
# Create storage container and upload zip to blob
New-AzStorageContainer -Name appcontainer -Context $ctx -Permission blob
Set-AzStorageBlobContent `
-File "path_to_your_zip_package" `
-Container appcontainer `
-Blob app.zip `
-Context $ctx
# Get blob absolute uri
$blobUri=(Get-AzureStorageBlob -Container appcontainer -Blob app.zip -Context $ctx).ICloudBlob.uri.AbsoluteUri
Uruchom następujący skrypt interfejsu wiersza polecenia platformy Azure lub wykonaj kroki opisane w witrynie Azure Portal, aby wdrożyć definicję aplikacji zarządzanej katalogu usług:
Aby uruchomić ten przykład, zainstaluj najnowszą wersję interfejsu wiersza polecenia platformy Azure. Aby rozpocząć, uruchom polecenie az login
w celu nawiązania połączenia z platformą Azure.
Przykłady dla interfejsu wiersza polecenia platformy Azure są napisane dla powłoki bash
. Aby uruchomić ten przykład w programie Windows PowerShell lub wierszu polecenia, może być konieczne zmianę elementów skryptu.
resourceGroup="appResourcesGroup"
# Select subscription and create resource group (if you have not created yet)
az account set --subscription <subscriptionID>
az group create --name $resourceGroup --location eastus
# Get object ID of your identity
userid=$(az ad user list --upn example@contoso.org --query [0].id --output tsv)
# Get role definition ID for the Owner role
roleid=$(az role definition list --name Owner --query [].name --output tsv)
# Create managed application definition resource
az managedapp definition create \
--name "ManagedUsersAppDefinition" \
--location "eastus" \
--resource-group $resourceGroup \
--lock-level ReadOnly \
--display-name "Managed users app definition" \
--description "Managed application with Azure Custom Provider" \
--authorizations "$userid:$roleid" \
--package-file-uri "path to your app.zip package"
Wystąpienie aplikacji zarządzanej
Po wdrożeniu definicji aplikacji zarządzanej uruchom następujący skrypt lub wykonaj kroki opisane w witrynie Azure Portal, aby wdrożyć wystąpienie aplikacji zarządzanej za pomocą dostawcy niestandardowego:
appResourcesGroup="appResourcesGroup"
applicationGroup="usersApplicationGroup"
# Create resource group for managed application instance
az group create --name $applicationGroup --location eastus
# Get ID of managed application definition
appid=$(az managedapp definition show --name ManagedUsersAppDefinition --resource-group $appResourcesGroup --query id --output tsv)
# Create the managed application
az managedapp create \
--name ManagedUsersApp \
--location "eastus" \
--kind "Servicecatalog" \
--resource-group $applicationGroup \
--managedapp-definition-id $appid \
--managed-rg-id "managedResourcesGroup" \
--parameters "{\"funcname\": {\"value\": \"managedusersappfunction\"}, \"storageName\": {\"value\": \"managedusersappstorage\"}}"
Akcje niestandardowe i zasoby
Po wdrożeniu wystąpienia aplikacji katalogu usług masz dwie nowe grupy zasobów. Grupa applicationGroup
zasobów zawiera wystąpienie aplikacji zarządzanej, a grupa managedResourceGroup
zasobów przechowuje zasoby dla aplikacji zarządzanej, w tym dostawcę niestandardowego.
Możesz przejść do wystąpienia aplikacji zarządzanej i wykonać akcję niestandardową na stronie "Przegląd", utworzyć zasób niestandardowy użytkowników na stronie "Użytkownicy" i uruchomić niestandardową akcję kontekstu dla zasobu niestandardowego.
- Przejdź do pozycji Przegląd i wybierz pozycję Akcja ping:
- Przejdź do pozycji Użytkownicy i wybierz pozycję Dodaj. Podaj dane wejściowe do utworzenia zasobu i prześlij formularz:
- Przejdź do pozycji Użytkownicy i wybierz zasób użytkowników, a następnie wybierz pozycję Niestandardowa akcja kontekstu:
Czyszczenie zasobów
W poprzednich krokach utworzono zasoby platformy Azure w grupie zasobów. Jeśli nie będziesz już potrzebować tych zasobów w przyszłości, możesz je usunąć przez usunięcie grupy zasobów.
W menu witryny Azure Portal lub na stronie głównej wybierz pozycję Grupy zasobów. Następnie na stronie Grupy zasobów wybierz pozycję myResourceGroup.
Na stronie myResourceGroup upewnij się, że wymienione zasoby są tymi, które chcesz usunąć.
Wybierz pozycję Usuń grupę zasobów, wpisz myResourceGroup w polu tekstowym, aby potwierdzić, a następnie wybierz pozycję Usuń.
Szukasz pomocy
Jeśli masz pytania lub potrzebujesz odpowiedzi na temat aplikacji zarządzanych platformy Azure, możesz opublikować pytanie w witrynie Stack Overflow za pomocą tagu azure-managed-app
lub języka Microsoft Q&A z tagiem azure-managed-application
.
Następne kroki
Aby opublikować aplikację zarządzaną w witrynie Azure Marketplace, zobacz Aplikacje zarządzane platformy Azure w witrynie Marketplace.
Dowiedz się więcej o dostawcach niestandardowych platformy Azure.