Přidání vlastních akcí do rozhraní Azure REST API
Tento článek projde požadavky a osvědčené postupy pro vytváření koncových bodů vlastního poskytovatele prostředků Azure, které implementují vlastní akce. Pokud nejste obeznámeni s vlastními poskytovateli prostředků Azure, projděte si přehled vlastních poskytovatelů prostředků.
Definování koncového bodu akce
Koncový bod je adresa URL, která odkazuje na službu, která implementuje podkladový kontrakt mezi ní a Azure. Koncový bod je definovaný ve vlastním poskytovateli prostředků a může to být libovolná veřejně přístupná adresa URL. V následující ukázce je akce s názvem myCustomAction
implementovaná nástrojem endpointURL
.
Ukázkový zdroj 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}"
}
Vytvoření koncového bodu akce
Koncový bod, který implementuje akci, musí zpracovat požadavek a odpověď pro nové rozhraní API v Azure. Když se vytvoří vlastní poskytovatel prostředků s akcí , vygeneruje v Azure novou sadu rozhraní API. V takovém případě akce vygeneruje nové rozhraní API pro akce Azure pro POST
volání:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomAction
Příchozí požadavek rozhraní Azure API:
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"
}
}
Tento požadavek se pak předá koncovému bodu 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ě se odpověď z koncového bodu přepošla zpět zákazníkovi. Odpověď z koncového bodu by měla vrátit:
- Platný dokument objektu JSON. Všechna pole a řetězce by měly být vnořené pod objektem nahoře.
- Hlavička
Content-Type
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ěď poskytovatele vlastních prostředků 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 z 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 |
---|---|---|
action | Ano | Název akce definované v ResourceProvider. |
Id | Ano | ID prostředku ResourceProvider. |
text požadavku | Ne | Text požadavku, 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 bylo možné akci volat uvnitř šablony, musí v názvu obsahovat předponu list
.
Sample ResourceProvider with List Action:Sample ResourceProvider with List Action:
{
"properties": {
"actions": [
{
"name": "listMyCustomAction",
"routingType": "Proxy",
"endpoint": "https://{endpointURL}/"
}
]
},
"location": "eastus"
}
Ukázková šablona 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ů. Vždy by to mělo být 2018-09-01-preview. |
hodnoty funkce | Ne | Text požadavku, který se odešle do koncového bodu. |