Přidání vlastních akcí do Azure REST API

Tento článek prochází požadavky a osvědčenými postupy pro vytváření koncových bodů poskytovatele vlastních prostředků Azure, které implementují vlastní akce. Pokud nejste obeznámeni s vlastními poskytovateli prostředků Azure, přečtěte si Přehled o vlastních poskytovatelích prostředků.

Definování koncového bodu akce

Koncový bod je adresa URL, která odkazuje na službu, která implementuje základní smlouvu mezi IT a Azure. Koncový bod je definovaný ve vlastním poskytovateli prostředků a může být libovolná veřejně přístupná adresa URL. Následující ukázka má akci volanou myCustomAction implementací endpointURL .

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

Sestavení koncového bodu akce

Koncový bod , který implementuje akci , musí zpracovat požadavek a odpověď na nové rozhraní API v Azure. Když se vytvoří vlastní poskytovatel prostředků s akcí , vygeneruje se v Azure nová sada rozhraní API. V takovém případě bude tato akce generovat nové rozhraní Azure Action API pro POST volání:

/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomAction

Příchozí požadavek rozhraní API Azure:

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

Tato žádost se pak přepošle na koncový bod ve formátu:

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

Podobně odpověď z koncového bodu se pak přepošle zpátky zákazníkovi. Odpověď z koncového bodu by měla vracet:

  • Platný dokument objektu JSON. Všechna pole a řetězce by měly být vnořeny do objektu nejvyšší úrovně.
  • Content-TypeHlavička by měla být nastavená na "Application/JSON; charset = UTF-8.
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "myProperty1": "myPropertyValue1",
    "myProperty2": {
        "myProperty3" : "myPropertyValue3"
    }
}

Odpověď zprostředkovatele vlastního prostředku Azure:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "myProperty1": "myPropertyValue1",
    "myProperty2": {
        "myProperty3" : "myPropertyValue3"
    }
}

Volání vlastní akce

Existují dva hlavní způsoby volání vlastní akce od vlastního poskytovatele prostředků:

  • Azure CLI
  • Šablony Azure Resource Manageru

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"
                                }
                            }'
Parametr Povinné Popis
akce Ano Název akce definované v ResourceProvider.
identifikační Ano ID prostředku ResourceProvider.
tělo žádosti Ne Text žádosti, který se odešle do koncového bodu.

Šablona Azure Resource Manageru

Poznámka

Akce mají v šablonách Azure Resource Manager omezenou podporu. Aby byla akce volána uvnitř šablony, musí obsahovat list předponu v názvu.

Ukázka ResourceProvider s akcí list:

{
  "properties": {
    "actions": [
      {
        "name": "listMyCustomAction",
        "routingType": "Proxy",
        "endpoint": "https://{endpointURL}/"
      }
    ]
  },
  "location": "eastus"
}

Ukázka šablony Azure Resource Manager:

{
    "$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'))]"
        }
    }
}
Parametr Povinné Popis
resourceIdentifier Ano ID prostředku ResourceProvider.
apiVersion Ano Verze rozhraní API modulu runtime prostředků Tato možnost by měla být vždy "2018-09-01-Preview".
functionValues Ne Text žádosti, který se odešle do koncového bodu.

Další kroky