Aangepaste acties toevoegen aan Azure REST API
In dit artikel worden de vereisten en aanbevolen procedures beschreven voor het maken van eindpunten van de Azure Custom Resource Provider waarmee aangepaste acties worden geïmplementeerd. Als u niet bekend bent met aangepaste resourceproviders van Azure, raadpleegt u het overzicht van aangepaste resourceproviders.
Een actie-eindpunt definiëren
Een eindpunt is een URL die verwijst naar een service, waarmee het onderliggende contract tussen het eindpunt en Azure wordt geïmplementeerd. Het eindpunt wordt gedefinieerd in de aangepaste resourceprovider en kan elke openbaar toegankelijke URL zijn. Het onderstaande voorbeeld bevat een actie met de naam myCustomAction
geïmplementeerd door endpointURL
.
Voorbeeld van ResourceProvider:
{
"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-eindpunt bouwen
Een eindpunt dat een actie implementeert, moet de aanvraag en het antwoord voor de nieuwe API in Azure verwerken. Wanneer een aangepaste resourceprovider met een actie wordt gemaakt, wordt er een nieuwe set API's in Azure gegenereerd. In dit geval genereert de actie een nieuwe Azure-actie-API voor POST
aanroepen:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomAction
Binnenkomende 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 eindpunt in het volgende formulier:
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 het antwoord van het eindpunt vervolgens doorgestuurd naar de klant. Het antwoord van het eindpunt moet het volgende retourneren:
- Een geldig JSON-objectdocument. Alle matrices en tekenreeksen moeten worden genest onder een bovenste object.
- De
Content-Type
header 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"
}
}
Antwoord van aangepaste Azure-resourceprovider:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3" : "myPropertyValue3"
}
}
Een aangepaste actie aanroepen
Er zijn twee belangrijke manieren om een aangepaste actie aan te roepen van een aangepaste resourceprovider:
- 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 |
---|---|---|
action | Ja | De naam van de actie die is gedefinieerd in ResourceProvider. |
Ids | Ja | De resource-id van de ResourceProvider. |
request-body | No | De aanvraagbody die naar het eindpunt wordt verzonden. |
Azure Resource Manager-sjabloon
Notitie
Acties hebben beperkte ondersteuning in Azure Resource Manager-sjablonen. Als u de actie wilt aanroepen in een sjabloon, moet deze het voorvoegsel in de list
naam bevatten.
Voorbeeld van ResourceProvider met lijstactie:
{
"properties": {
"actions": [
{
"name": "listMyCustomAction",
"routingType": "Proxy",
"endpoint": "https://{endpointURL}/"
}
]
},
"location": "eastus"
}
Voorbeeld 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 | Ja | De resource-id van de ResourceProvider. |
apiVersion | Ja | De API-versie van de resourceruntime. Dit moet altijd '2018-09-01-preview' zijn. |
functionValues | No | De aanvraagbody die naar het eindpunt wordt verzonden. |