Door Azure beheerde toepassingen met meldingen

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

Aan de slag

Als u meldingen van beheerde toepassingen wilt ontvangen, maakt u een openbaar HTTPS-eindpunt. Geef het eindpunt op wanneer u de toepassingsdefinitie van de servicecatalogus of Microsoft Azure Marketplace-aanbieding publiceert.

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

  1. Maak een openbaar HTTPS-eindpunt dat de binnenkomende POST-aanvragen registreert en retourneert 200 OK.
  2. Voeg het eindpunt toe aan de toepassingsdefinitie van de servicecatalogus of Azure Marketplace aanbieding, zoals verderop in dit artikel wordt uitgelegd.
  3. Maak een exemplaar van een beheerde toepassing die 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.

Meldingen voor toepassingsdefinities voor servicecatalogus toevoegen

In de volgende voorbeelden ziet u hoe u een eindpunt-URI voor meldingen toevoegt met behulp van de portal of REST API.

Azure Portal

Zie Quickstart: Een definitie van een beheerde Azure-toepassing maken en publiceren om aan de slag te gaan.

Schermopname van de Azure Portal met de definitie van een beheerde toepassing in de servicecatalogus en het meldingseindpunt.

REST-API

Notitie

U kunt slechts één eindpunt opgeven in de notificationEndpoints eigenschap van de definitie van de beheerde toepassing.

{
  "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 van Azure Marketplace beheerde toepassingen toevoegen

Zie Een Azure-toepassingsaanbieding maken voor meer informatie.

Schermopname van Azure Marketplace meldingen van beheerde toepassingen in de Azure Portal.

Gebeurtenistriggers

In de volgende tabel worden alle mogelijke combinaties van eventType en provisioningState en hun triggers beschreven:

EventType ProvisioningState Trigger voor melding
PUT Geaccepteerd De beheerde resourcegroep is gemaakt en geprojecteerd na put van de toepassing (voordat de implementatie binnen de beheerde resourcegroep wordt gestart).
PUT Geslaagd De volledige inrichting van de beheerde toepassing is voltooid na een PUT.
PUT Mislukt Fout bij het inrichten van de PUT van het toepassingsexemplaren.
PATCH Geslaagd Na een geslaagde PATCH op het beheerde toepassingsexemplaren om tags, JIT-toegangsbeleid of beheerde identiteit bij te werken.
DELETE Verwijderen Zodra de gebruiker een DELETE van een exemplaar van een beheerde app initieert.
DELETE Verwijderd Na de volledige en geslaagde verwijdering van de beheerde toepassing.
DELETE Mislukt Na een fout tijdens het ongedaan maken van de inrichting waardoor de verwijdering wordt geblokkeerd.

Meldingsschema

Wanneer u uw webhook-eindpunt maakt voor het afhandelen van meldingen, moet u de nettolading parseren om belangrijke eigenschappen op te halen en vervolgens op de melding te reageren. Servicecatalogus en Azure Marketplace beheerde toepassingsmeldingen bieden veel van dezelfde eigenschappen, maar er zijn enkele verschillen. De applicationDefinitionId eigenschap is alleen van toepassing op de servicecatalogus. De billingDetails eigenschappen en plan zijn alleen van toepassing op Azure Marketplace.

Azure voegt toe aan de meldingseindpunt-URI /resource die u hebt opgegeven in de definitie van de beheerde toepassing. Het webhook-eindpunt moet meldingen op de /resource URI kunnen verwerken. Als u bijvoorbeeld een eindpunt-URI voor meldingen hebt opgegeven, zoals https://fabrikam.com , is https://fabrikam.com/resourcede eindpunt-URI van de webhook .

Meldingsschema voor servicecatalogustoepassingen

In het volgende voorbeeld ziet u een melding over de servicecatalogus na het succesvol inrichten van een exemplaar van een beheerde toepassing.

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 de inrichting 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

In het volgende voorbeeld ziet u een melding over de servicecatalogus na het succesvol inrichten van een exemplaar van een beheerde toepassing.

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 de inrichting 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"
      }
    ]
  }
}
Eigenschap 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 inrichtingsstatus van het beheerde toepassingsexemplaren. Bijvoorbeeld Geslaagd, Mislukt, Verwijderen, Verwijderd.
applicationDefinitionId Alleen opgegeven voor door de servicecatalogus beheerde toepassingen. Vertegenwoordigt de volledig gekwalificeerde resource-id van de toepassingsdefinitie waarvoor het beheerde toepassingsexemplaren is ingericht.
billingDetails Alleen opgegeven voor Azure Marketplace beheerde toepassingen. De factureringsgegevens van het beheerde toepassingsexemplaren. Bevat de resourceUsageId die u kunt gebruiken om een query uit te voeren op Azure Marketplace voor gebruiksgegevens.
plan Alleen opgegeven voor Azure Marketplace beheerde toepassingen. Vertegenwoordigt de uitgever, aanbieding, SKU en versie van het beheerde toepassingsexemplaren.
error Alleen opgegeven wanneer de provisioningState Is mislukt. Bevat de foutcode, het bericht en de details van het probleem dat de fout heeft veroorzaakt.

Eindpuntverificatie

Het webhook-eindpunt beveiligen en de echtheid van de melding 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 Guidheeft.
  2. Geef een GET uit op het beheerde toepassingsexemplaren met behulp van applicationId. Controleer of de provisioningState overeenkomt met de provisioningState van de melding om consistentie te garanderen.

Nieuwe pogingen voor meldingen

De meldingsservice van de beheerde toepassing verwacht een 200 OK reactie van het webhook-eindpunt op de melding. De meldingsservice probeert het opnieuw als het webhook-eindpunt een HTTP-foutcode groter dan of gelijk aan 500 retourneert, de foutcode 429 retourneert of als het eindpunt tijdelijk onbereikbaar is. Als het webhook-eindpunt niet binnen 10 uur beschikbaar is, wordt het meldingsbericht verwijderd en worden de nieuwe pogingen gestopt.