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. |