Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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ę
TestActionniestandardową z podstawowymi danymi wejściowymi tekstowymi. -
Strona Użytkownicy reprezentująca niestandardowy typ
userszasobu. - Niestandardowa akcja
users/contextActionzasobu 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 oczekujesz, że te zasoby będą potrzebne w przyszłości, możesz je usunąć, usuwając grupę zasobów:
W menu witryny Azure Portal lub stronie głównej wybierz pozycję Grupy> zasobówmyResourceGroup.
W okienku 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
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.