Door Azure beheerde toepassingen met meldingen

Met meldingen van door Azure beheerde toepassingen kunnen uitgevers acties automatiseren op basis van levenscyclusgebeurtenissen van de beheerde toepassings instances. Uitgevers kunnen aangepaste webhook-eindpunten voor meldingen opgeven om gebeurtenismeldingen te ontvangen over nieuwe en bestaande beheerde toepassings instances. Uitgevers kunnen aangepaste werkstromen instellen op het moment dat de toepassing wordt ingericht, bijgewerkt en verwijderd.

Aan de slag

Als u beheerde toepassingen wilt ontvangen, maakt u een openbaar HTTPS-eindpunt en geeft u dit op wanneer u de toepassingsdefinitie of Azure Marketplace servicecatalogus publiceert.

Hier volgen de aanbevolen stappen om snel aan de slag te gaan:

  1. Een openbaar HTTPS-eindpunt maken dat de binnenkomende POST-aanvragen registreert en 200 OK retourneert.
  2. Voeg het eindpunt toe aan de toepassingsdefinitie van de servicecatalogus of Azure Marketplace aanbieding, zoals later in dit artikel wordt uitgelegd.
  3. Maak een exemplaar van een beheerde toepassing dat verwijst naar de toepassingsdefinitie of Azure Marketplace aanbieding.
  4. Controleer of de meldingen worden ontvangen.
  5. Schakel autorisatie in, zoals wordt uitgelegd in de sectie Eindpuntverificatie van dit artikel.
  6. Volg de instructies in de sectie Meldingsschema van dit artikel om de meldingsaanvragen te parseren en uw bedrijfslogica te implementeren op basis van de melding.

Toepassingsdefinitiemeldingen voor servicecatalogus toevoegen

Azure Portal

Zie Publish a service catalog application through Azure Portal (Een servicecatalogustoepassing publicerenvia Azure Portal).

Meldingen over de toepassingsdefinitie van de servicecatalogus in de Azure Portal

REST-API

Notitie

Op dit moment kunt u slechts één eindpunt in de notificationEndpoints in de eigenschappen van de toepassingsdefinitie leveren.

    {
      "properties": {
        "isEnabled": true,
        "lockLevel": "ReadOnly",
        "displayName": "Sample Application Definition",
        "description": "Notification-enabled application definition.",
        "notificationPolicy": {
            "notificationEndpoints": [
                {
                    "uri": "https://isv.azurewebsites.net:1214?sig=unique_token"
                }
            ]
        },
        "authorizations": [
          {
            "principalId": "d6b7fbd3-4d99-43fe-8a7a-f13aef11dc18",
            "roleDefinitionId": "8e3af657-a8ff-443c-a75c-2fe8c4bcb635"
          },
        ...

Meldingen Azure Marketplace beheerde toepassing toevoegen

Zie Een Azure-toepassingsaanbieding maken voor meer informatie.

Azure Marketplace beheerde toepassingsmeldingen in de Azure Portal

Gebeurtenistriggers

In de volgende tabel worden alle mogelijke combinaties van EventType en ProvisioningState en de triggers beschreven:

EventType ProvisioningState Trigger voor melding
PUT Geaccepteerd De beheerde resourcegroep is gemaakt en geprojecteerd nadat de toepassing PUT is geïmplementeerd (voordat de implementatie binnen de beheerde resourcegroep wordt uitgevoerd).
PUT Geslaagd De volledige inrichting van de beheerde toepassing is geslaagd na een PUT.
PUT Mislukt Fout bij HET INRICHTEN van toepassings-instanties op enig moment.
PATCH Geslaagd Na een geslaagde PATCH op het exemplaar van de beheerde toepassing voor het bijwerken van tags, JIT-toegangsbeleid of beheerde identiteit.
DELETE Verwijderen Zodra de gebruiker een DELETE van een beheerd app-exemplaar initieert.
DELETE Verwijderd Na de volledige en geslaagde verwijdering van de beheerde toepassing.
DELETE Mislukt Na een fout tijdens het deprovisioning-proces dat de verwijdering blokkeert.

Meldingsschema

Wanneer u uw webhook-eindpunt voor het afhandelen van meldingen in werking laat treden, moet u de nettolading parseren om belangrijke eigenschappen op te halen om vervolgens op de melding te reageren. Servicecatalogus en Azure Marketplace beheerde toepassingsmeldingen bieden veel van dezelfde eigenschappen. Er worden twee kleine verschillen beschreven in de tabel die volgt op de voorbeelden.

Toepassingsmeldingsschema voor servicecatalogus

Hier is een voorbeeld van een servicecatalogusmelding na de geslaagde inrichting van een beheerd toepassings exemplaar:

POST https://{your_endpoint_URI}/resource?{optional_parameter}={optional_parameter_value} HTTP/1.1

{
    "eventType": "PUT",
    "applicationId": "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applications/<applicationName>",
    "eventTime": "2019-08-14T19:20:08.1707163Z",
    "provisioningState": "Succeeded",
    "applicationDefinitionId": "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applicationDefinitions/<appDefName>"    
}

Als het inrichten mislukt, wordt er een melding met de foutdetails verzonden naar het opgegeven eindpunt.

POST https://{your_endpoint_URI}/resource?{optional_parameter}={optional_parameter_value} HTTP/1.1

{
    "eventType": "PUT",
    "applicationId": "subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applications/<applicationName>",
    "eventTime": "2019-08-14T19:20:08.1707163Z",
    "provisioningState": "Failed",
    "applicationDefinitionId": "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applicationDefinitions/<appDefName>",
    "error": {
        "code": "ErrorCode",
        "message": "error message",
        "details": [
            {
                "code": "DetailedErrorCode",
                "message": "error message"
            }
        ]
    }
}

Azure Marketplace toepassingsmeldingsschema

Hier is een voorbeeld van een servicecatalogusmelding na de geslaagde inrichting van een beheerd toepassings exemplaar:

POST https://{your_endpoint_URI}/resource?{optional_parameter}={optional_parameter_value} HTTP/1.1

{
    "eventType": "PUT",
    "applicationId": "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applications/<applicationName>",
    "eventTime": "2019-08-14T19:20:08.1707163Z",
    "provisioningState": "Succeeded",
    "billingDetails": {
        "resourceUsageId":"<resourceUsageId>"
    },
    "plan": {
        "publisher": "publisherId",
        "product": "offer",
        "name": "skuName",
        "version": "1.0.1"
    }
}

Als het inrichten mislukt, wordt er een melding met de foutdetails verzonden naar het opgegeven eindpunt.

POST https://{your_endpoint_URI}/resource?{optional_parameter}={optional_parameter_value} HTTP/1.1

{
    "eventType": "PUT",
    "applicationId": "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applications/<applicationName>",
    "eventTime": "2019-08-14T19:20:08.1707163Z",
    "provisioningState": "Failed",
    "billingDetails": {
        "resourceUsageId":"<resourceUsageId>"
    },
    "plan": {
        "publisher": "publisherId",
        "product": "offer",
        "name": "skuName",
        "version": "1.0.1"
    },
    "error": {
        "code": "ErrorCode",
        "message": "error message",
        "details": [
            {
                "code": "DetailedErrorCode",
                "message": "error message"
            }
        ]
    }
}

Parameter Beschrijving
eventType Het type gebeurtenis dat de melding heeft geactiveerd. (Bijvoorbeeld PUT, PATCH, DELETE.)
applicationId De volledig gekwalificeerde resource-id van de beheerde toepassing waarvoor de melding is geactiveerd.
eventTime De tijdstempel van de gebeurtenis die de melding heeft geactiveerd. (Datum en tijd in UTC ISO 8601-indeling.)
provisioningState De inrichtingstoestand van het exemplaar van de beheerde toepassing. (Bijvoorbeeld Geslaagd, Mislukt, Verwijderen, Verwijderd.)
fout Wordt alleen opgegeven wanneer provisioningState Mislukt is. Bevat de foutcode, het bericht en de details van het probleem dat de fout heeft veroorzaakt.
applicationDefinitionId Alleen opgegeven voor door de servicecatalogus beheerde toepassingen. Vertegenwoordigt de volledig gekwalificeerde resource-id van de toepassingsdefinitie waarvoor het exemplaar van de beheerde toepassing is ingericht.
plannen Alleen opgegeven voor Azure Marketplace beheerde toepassingen. Vertegenwoordigt de uitgever, aanbieding, SKU en versie van het exemplaar van de beheerde toepassing.
billingDetails Alleen opgegeven voor Azure Marketplace beheerde toepassingen. De factureringsgegevens van het exemplaar van de beheerde toepassing. Bevat de resourceUsageId die u kunt gebruiken om een query uit te voeren Azure Marketplace voor gebruiksgegevens.

Eindpuntverificatie

Om het webhook-eindpunt te beveiligen en de echtheid van de melding te garanderen:

  1. Geef een queryparameter op boven op de webhook-URI, zoals: https : /your-endpoint.com?sig=Guid. Controleer bij elke melding of de queryparameter sig de verwachte waarde Guid heeft.
  2. Een GET-aanvraag voor het exemplaar van de beheerde toepassing uitgeven met behulp van applicationId. Controleer of de provisioningState overeenkomt met de provisioningState van de melding om consistentie te garanderen.

Nieuwe meldingen

De Managed Application Notification-service verwacht een reactie van 200 OK het webhook-eindpunt op de melding. De meldingsservice zal het opnieuw proberen als het webhook-eindpunt een HTTP-foutcode retourneert die groter is dan of gelijk is aan 500 als deze een foutcode 429 retourneert of als het eindpunt tijdelijk niet bereikbaar is. Als het webhook-eindpunt niet binnen 10 uur beschikbaar komt, wordt het meldingsbericht uitgevallen en worden de nieuwe proberen gestopt.