Azure-hanterade program med meddelanden
Azure-meddelanden för hanterade program gör det möjligt för utgivare att automatisera åtgärder baserat på livscykelhändelser för de hanterade programinstanserna. Utgivare kan ange en webhook-slutpunkt för anpassade meddelanden för att ta emot händelsemeddelanden om nya och befintliga hanterade programinstanser. Utgivare kan konfigurera anpassade arbetsflöden vid tidpunkten för programetablering, uppdateringar och borttagning.
Komma igång
Om du vill börja ta emot meddelanden om hanterade program skapar du en offentlig HTTPS-slutpunkt. Ange slutpunkten när du publicerar programdefinitionen för tjänstkatalogen eller Microsoft Azure Marketplace erbjudande.
Här är de rekommenderade stegen för att komma igång snabbt:
- Skapa en offentlig HTTPS-slutpunkt som loggar inkommande POST-begäranden och returnerar
200 OK
. - Lägg till slutpunkten i programdefinitionen för tjänstkatalogen eller Azure Marketplace erbjudande enligt beskrivningen senare i den här artikeln.
- Skapa en hanterad programinstans som refererar till programdefinitionen eller Azure Marketplace erbjudande.
- Kontrollera att meddelandena tas emot.
- Aktivera auktorisering enligt beskrivningen i avsnittet Slutpunktsautentisering i den här artikeln.
- Följ anvisningarna i avsnittet Meddelandeschema i den här artikeln för att parsa meddelandebegäranden och implementera din affärslogik baserat på meddelandet.
Lägga till aviseringar om programdefinitioner för tjänstkatalog
Följande exempel visar hur du lägger till en meddelandeslutpunkts-URI med hjälp av portalen eller REST-API:et.
Azure Portal
Information om hur du kommer igång finns i Snabbstart: Skapa och publicera en Azure Managed Application-definition.
REST-API
Anteckning
Du kan bara ange en slutpunkt i notificationEndpoints
egenskapen för definitionen för det hanterade programmet.
{
"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"
},
...
Lägga till Azure Marketplace meddelanden för hanterade program
Mer information finns i Skapa ett Azure-programerbjudande.
Händelseutlösare
I följande tabell beskrivs alla möjliga kombinationer av eventType
och provisioningState
deras utlösare:
Eventtype | ProvisioningState | Utlösare för meddelande |
---|---|---|
PUT | Har godkänts | Den hanterade resursgruppen har skapats och projicerats efter programmet PUT (innan distributionen i den hanterade resursgruppen startas). |
PUT | Lyckades | Fullständig etablering av det hanterade programmet lyckades efter en PUT. |
PUT | Misslyckad | Det gick inte att etablera PUT för programinstansen när som helst. |
PATCH | Lyckades | Efter en lyckad PATCH på den hanterade programinstansen för att uppdatera taggar, JIT-åtkomstprincip eller hanterad identitet. |
DELETE | Tas bort | Så snart användaren initierar en DELETE av en hanterad appinstans. |
DELETE | Borttagen | Efter den fullständiga och lyckade borttagningen av det hanterade programmet. |
DELETE | Misslyckad | Efter ett fel under avetableringsprocessen som blockerar borttagningen. |
Meddelandeschema
När du skapar din webhook-slutpunkt för att hantera meddelanden måste du parsa nyttolasten för att få viktiga egenskaper för att sedan agera på meddelandet. Tjänstkatalogen och Azure Marketplace aviseringar om hanterade program ger många av samma egenskaper, men det finns vissa skillnader. Egenskapen applicationDefinitionId
gäller endast för tjänstkatalogen. Egenskaperna billingDetails
och plan
gäller endast för Azure Marketplace.
Azure lägger till i meddelandeslutpunkts-URI /resource
:n som du angav i definitionen för det hanterade programmet. Webhook-slutpunkten måste kunna hantera meddelanden på URI:n /resource
. Om du till exempel har angett en meddelandeslutpunkts-URI som https://fabrikam.com
så är https://fabrikam.com/resource
webhook-slutpunkts-URI:n .
Schema för programavisering för tjänstkatalog
Följande exempel visar ett meddelande om tjänstkatalogen efter att en hanterad programinstans har etablerats.
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>"
}
Om etableringen misslyckas skickas ett meddelande med felinformationen till den angivna slutpunkten.
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 programmeddelandeschema
Följande exempel visar ett meddelande om tjänstkatalogen efter att en hanterad programinstans har etablerats.
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"
}
}
Om etableringen misslyckas skickas ett meddelande med felinformationen till den angivna slutpunkten.
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"
}
]
}
}
Egenskap | Beskrivning |
---|---|
eventType |
Den typ av händelse som utlöste meddelandet. (Till exempel PUT, PATCH, DELETE.) |
applicationId |
Den fullständigt kvalificerade resursidentifieraren för det hanterade program som meddelandet utlöstes för. |
eventTime |
Tidsstämpeln för händelsen som utlöste meddelandet. (Datum och tid i UTC ISO 8601-format.) |
provisioningState |
Etableringstillståndet för den hanterade programinstansen. Till exempel Lyckades, Misslyckades, Ta bort, Borttaget. |
applicationDefinitionId |
Anges endast för tjänstkataloghanterade program. Representerar den fullständigt kvalificerade resursidentifieraren för programdefinitionen som den hanterade programinstansen etablerades för. |
billingDetails |
Anges endast för Azure Marketplace hanterade program. Faktureringsinformation för den hanterade programinstansen. Innehåller det resourceUsageId som du kan använda för att fråga Azure Marketplace för användningsinformation. |
plan |
Anges endast för Azure Marketplace hanterade program. Representerar utgivaren, erbjudandet, SKU:n och versionen av den hanterade programinstansen. |
error |
Anges endast när provisioningState är Failed. Innehåller felkoden, meddelandet och information om problemet som orsakade felet. |
Slutpunktsautentisering
Så här skyddar du webhook-slutpunkten och ser till att meddelandet är äkta:
- Ange en frågeparameter ovanpå webhook-URI:n, så här:
https://your-endpoint.com?sig=Guid
. Kontrollera att frågeparameternsig
har det förväntade värdetGuid
för varje meddelande. - Utfärda en GET på den hanterade programinstansen med hjälp
applicationId
av . Kontrollera attprovisioningState
matcharprovisioningState
meddelandet för att säkerställa konsekvens.
Återförsök av meddelanden
Den hanterade programaviseringstjänsten förväntar sig ett 200 OK
svar från webhook-slutpunkten till meddelandet. Meddelandetjänsten försöker igen om webhook-slutpunkten returnerar en HTTP-felkod som är större än eller lika med 500, returnerar en felkod på 429 eller om slutpunkten tillfälligt inte kan nås. Om webhook-slutpunkten inte blir tillgänglig inom 10 timmar tas meddelandet bort och återförsöken stoppas.