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-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"
    }
}

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.

Volgende stappen