Door Azure beheerde toepassingen met meldingen
Door Azure beheerde toepassingsmeldingen kunnen uitgevers acties automatiseren op basis van levenscyclus-gebeurtenissen van de beheerde toepassingsexemplaren. Uitgevers kunnen een aangepast webhookeindpunt voor meldingen opgeven om gebeurtenismeldingen te ontvangen over nieuwe en bestaande exemplaren van beheerde toepassingen. Uitgevers kunnen aangepaste werkstromen instellen op het moment van het inrichten, bijwerken en verwijderen van toepassingen.
Aan de slag
Als u meldingen van beheerde toepassingen wilt ontvangen, maakt u een openbaar HTTPS-eindpunt. Geef het eindpunt op wanneer u de definitie van de servicecatalogustoepassing of microsoft Azure Marketplace-aanbieding publiceert.
Hier volgen de aanbevolen stappen om snel aan de slag te gaan:
- Maak een openbaar HTTPS-eindpunt dat de binnenkomende POST-aanvragen registreert en retourneert
200 OK
. - Voeg het eindpunt toe aan de definitie van de servicecatalogustoepassing of de Azure Marketplace-aanbieding, zoals verderop in dit artikel wordt uitgelegd.
- Maak een exemplaar van een beheerde toepassing dat verwijst naar de toepassingsdefinitie of Azure Marketplace-aanbieding.
- Controleer of de meldingen worden ontvangen.
- Schakel autorisatie in, zoals wordt uitgelegd in de sectie Eindpuntverificatie van dit artikel.
- 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.
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 voor beheerde Azure Marketplace-toepassingen toevoegen
Zie Een Azure-toepassingsaanbieding maken voor meer informatie.
Gebeurtenistriggers
In de volgende tabel worden alle mogelijke combinaties van eventType
en provisioningState
hun triggers beschreven:
EventType | ProvisioningState | Trigger voor melding |
---|---|---|
PUT | Geaccepteerd | De beheerde resourcegroep is gemaakt en geprojecteerd nadat de toepassing PUT is uitgevoerd (voordat de implementatie in 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 PUT van toepassingsexemplaren. |
PATCH | Geslaagd | Na een geslaagd PATCH op het exemplaar van de beheerde toepassing om tags, Just-In-Time-toegangsbeleid (JIT) of beheerde identiteit bij te werken. |
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 ongedaan maken van de inrichting die het verwijderen blokkeert. |
Meldingsschema
Wanneer u uw webhook-eindpunt maakt om meldingen te verwerken, moet u de nettolading parseren om belangrijke eigenschappen te krijgen om vervolgens te reageren op de melding. Servicecatalogus en meldingen van beheerde Azure Marketplace-toepassingen bieden veel van dezelfde eigenschappen, maar er zijn enkele verschillen. De applicationDefinitionId
eigenschap is alleen van toepassing op de servicecatalogus. De billingDetails
en plan
eigenschappen zijn alleen van toepassing op Azure Marketplace.
Azure voegt de URI van het meldingseindpunt /resource
toe die u hebt opgegeven in de definitie van de beheerde toepassing. Het eindpunt van de webhook moet meldingen op de /resource
URI kunnen verwerken. Als u bijvoorbeeld een eindpunt-URI voor meldingen hebt opgegeven, zoals https://fabrikam.com
de eindpunt-URI van de webhook is https://fabrikam.com/resource
.
Meldingsschema voor servicecatalogustoepassingen
In het volgende voorbeeld ziet u een servicecatalogusmelding na het 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 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"
}
]
}
}
Meldingsschema voor Azure Marketplace-toepassingen
In het volgende voorbeeld ziet u een servicecatalogusmelding na het 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 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"
}
]
}
}
Eigenschappen | 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 exemplaar van de beheerde toepassing. Bijvoorbeeld Geslaagd, Mislukt, Verwijderen, Verwijderd. |
applicationDefinitionId |
Alleen opgegeven voor beheerde toepassingen in de servicecatalogus. Vertegenwoordigt de volledig gekwalificeerde resource-id van de toepassingsdefinitie waarvoor het exemplaar van de beheerde toepassing is ingericht. |
billingDetails |
Alleen opgegeven voor beheerde Azure Marketplace-toepassingen. De factureringsgegevens van het exemplaar van de beheerde toepassing. Bevat de resourceUsageId inhoud die u kunt gebruiken om een query uit te voeren op Azure Marketplace voor gebruiksgegevens. |
plan |
Alleen opgegeven voor beheerde Azure Marketplace-toepassingen. Vertegenwoordigt de uitgever, aanbieding, SKU en versie van het exemplaar van de beheerde toepassing. |
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 webhookeindpunt beveiligen en de echtheid van de melding garanderen:
- Geef een queryparameter op boven op de webhook-URI, zoals deze:
https://your-endpoint.com?sig=Guid
. Controleer bij elke melding of de queryparametersig
de verwachte waardeGuid
heeft. - Geef een GET op het exemplaar van de beheerde toepassing met behulp van
applicationId
. Controleer of deprovisioningState
melding overeenkomt met deprovisioningState
melding om consistentie te garanderen.
Nieuwe pogingen voor meldingen
De meldingsservice voor beheerde toepassingen verwacht een 200 OK
reactie van het webhook-eindpunt op de melding. De meldingsservice probeert opnieuw als het webhook-eindpunt een HTTP-foutcode retourneert die groter is dan of gelijk is aan 500, retourneert deze een foutcode van 429 of als het eindpunt tijdelijk onbereikbaar is. Als het webhookeindpunt niet binnen 10 uur beschikbaar is, wordt het meldingsbericht verwijderd en worden de nieuwe pogingen gestopt.