Aangepaste acties toevoegen aan Azure REST API
In dit artikel worden de vereisten en aanbevolen procedures beschreven voor het maken van eind punten van aangepaste Azure-resource providers waarmee aangepaste acties worden geïmplementeerd. Als u niet bekend bent met aangepaste Azure-resource providers, raadpleegt u het overzicht van aangepaste resource providers.
Een actie-eind punt definiëren
Een eind punt is een URL die verwijst naar een service, waarmee het onderliggende contract tussen IT en Azure wordt geïmplementeerd. Het eind punt wordt gedefinieerd in de aangepaste resource provider en kan een openbaar toegankelijke URL zijn. In het onderstaande voor beeld is de actie myCustomAction geïmplementeerd door endpointURL .
Voor beeld van resource provider:
{
"properties": {
"actions": [
{
"name": "myCustomAction",
"routingType": "Proxy",
"endpoint": "https://{endpointURL}/"
}
]
},
"location": "eastus",
"type": "Microsoft.CustomProviders/resourceProviders",
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}",
"name": "{resourceProviderName}"
}
Een actie-eind punt bouwen
Een eind punt dat een actie implementeert, moet de aanvraag en het antwoord voor de nieuwe API in azure afhandelen. Wanneer er een aangepaste resource provider met een actie wordt gemaakt, wordt er een nieuwe set Api's in azure gegenereerd. In dit geval genereert de actie een nieuwe Azure Action API voor POST aanroepen:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomAction
Inkomende Azure API-aanvraag:
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomAction?api-version=2018-09-01-preview
Authorization: Bearer eyJ0e...
Content-Type: application/json
{
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3" : "myPropertyValue3"
}
}
Deze aanvraag wordt vervolgens doorgestuurd naar het eind punt in de vorm:
POST https://{endpointURL}/?api-version=2018-09-01-preview
Content-Type: application/json
X-MS-CustomProviders-RequestPath: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomAction
{
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3" : "myPropertyValue3"
}
}
Op dezelfde manier wordt de reactie van het eind punt doorgestuurd naar de klant. Het antwoord van het eind punt moet het volgende retour neren:
- Een geldig JSON-object document. Alle matrices en teken reeksen moeten worden genest onder een top-object.
- De
Content-Typeheader moet worden ingesteld op application/json; charset = UTF-8.
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3" : "myPropertyValue3"
}
}
Reactie van de aangepaste Azure-resource provider:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3" : "myPropertyValue3"
}
}
Een aangepaste actie aanroepen
Er zijn twee hoofd manieren voor het aanroepen van een aangepaste actie voor een aangepaste resource provider:
- Azure CLI
- Azure Resource Manager-sjablonen
Azure CLI
az resource invoke-action --action {actionName} \
--ids /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName} \
--request-body \
'{
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3": "myPropertyValue3"
}
}'
| Parameter | Vereist | Beschrijving |
|---|---|---|
| actie | klikt | De naam van de actie die is gedefinieerd in de resource provider. |
| ids | klikt | De resource-ID van de resource provider. |
| request-body | geen | De hoofd tekst van de aanvraag die naar het eind punt wordt verzonden. |
Azure Resource Manager-sjabloon
Notitie
Acties hebben beperkte ondersteuning in Azure Resource Manager sjablonen. De actie kan alleen worden aangeroepen in een sjabloon als deze het list voor voegsel in de naam bevat.
Voor beeld van resource provider met lijst actie:
{
"properties": {
"actions": [
{
"name": "listMyCustomAction",
"routingType": "Proxy",
"endpoint": "https://{endpointURL}/"
}
]
},
"location": "eastus"
}
Voor beeld van Azure Resource Manager sjabloon:
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"variables": {
"resourceIdentifier": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}",
"apiVersion": "2018-09-01-preview",
"functionValues": {
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3": "myPropertyValue3"
}
}
},
"resources": [],
"outputs": {
"myCustomActionOutput": {
"type": "object",
"value": "[listMyCustomAction(variables('resourceIdentifier'), variables('apiVersion'), variables('functionValues'))]"
}
}
}
| Parameter | Vereist | Beschrijving |
|---|---|---|
| resourceIdentifier | klikt | De resource-ID van de resource provider. |
| apiVersion | klikt | De API-versie van de resource-runtime. Dit moet altijd ' 2018-09-01-preview ' zijn. |
| functionValues | geen | De hoofd tekst van de aanvraag die naar het eind punt wordt verzonden. |