Dodawanie akcji niestandardowych do interfejsu API REST platformy Azure
W tym artykule przedstawiono wymagania i najlepsze rozwiązania dotyczące tworzenia punktów końcowych niestandardowego dostawcy zasobów platformy Azure, które implementują akcje niestandardowe. Jeśli nie znasz dostawców zasobów niestandardowych platformy Azure, zapoznaj się z omówieniem niestandardowych dostawców zasobów.
Jak zdefiniować punkt końcowy akcji
Punkt końcowy to adres URL wskazujący usługę, która implementuje bazowy kontrakt między nim a platformą Azure. Punkt końcowy jest zdefiniowany w niestandardowym dostawcy zasobów i może być dowolnym publicznie dostępnym adresem URL. Poniższy przykład zawiera akcję o nazwie myCustomAction
zaimplementowaną przez endpointURL
program .
Przykładowy zasóbProvider:
{
"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}"
}
Tworzenie punktu końcowego akcji
Punkt końcowy, który implementuje akcję, musi obsługiwać żądanie i odpowiedź dla nowego interfejsu API na platformie Azure. Po utworzeniu niestandardowego dostawcy zasobów z akcją zostanie wygenerowany nowy zestaw interfejsów API na platformie Azure. W takim przypadku akcja wygeneruje nowy interfejs API akcji platformy Azure dla POST
wywołań:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomAction
Żądanie przychodzące interfejsu API platformy 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"
}
}
To żądanie zostanie następnie przekazane do punktu końcowego w formularzu:
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"
}
}
Podobnie odpowiedź z punktu końcowego jest następnie przekazywana z powrotem do klienta. Odpowiedź z punktu końcowego powinna zwrócić:
- Prawidłowy dokument obiektu JSON. Wszystkie tablice i ciągi powinny być zagnieżdżone w górnej części obiektu.
- Nagłówek
Content-Type
powinien być ustawiony na wartość "application/json; charset=utf-8".
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3" : "myPropertyValue3"
}
}
Odpowiedź niestandardowego dostawcy zasobów platformy Azure:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3" : "myPropertyValue3"
}
}
Wywoływanie akcji niestandardowej
Istnieją dwa główne sposoby wywoływania akcji niestandardowej od niestandardowego dostawcy zasobów:
- Interfejs wiersza polecenia platformy Azure
- Szablony usługi Azure Resource Manager
Interfejs wiersza polecenia platformy Azure
az resource invoke-action --action {actionName} \
--ids /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName} \
--request-body \
'{
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3": "myPropertyValue3"
}
}'
Parametr | Wymagane | Opis |
---|---|---|
action | Tak | Nazwa akcji zdefiniowanej w elemecie ResourceProvider. |
Identyfikatory | Tak | Identyfikator zasobu dostawcy zasobów. |
treść żądania | Nr | Treść żądania, która zostanie wysłana do punktu końcowego. |
Szablon usługi Azure Resource Manager
Uwaga
Akcje mają ograniczoną obsługę szablonów usługi Azure Resource Manager. Aby akcja została wywołana wewnątrz szablonu, musi zawierać list
prefiks w nazwie.
Przykładowy zasóbProvider z akcją listy:
{
"properties": {
"actions": [
{
"name": "listMyCustomAction",
"routingType": "Proxy",
"endpoint": "https://{endpointURL}/"
}
]
},
"location": "eastus"
}
Przykładowy szablon usługi 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 | Wymagane | Opis |
---|---|---|
resourceIdentifier | Tak | Identyfikator zasobu dostawcy zasobów. |
apiVersion | Tak | Wersja interfejsu API środowiska uruchomieniowego zasobów. Powinna to być zawsze wartość "2018-09-01-preview". |
functionValues | Nr | Treść żądania, która zostanie wysłana do punktu końcowego. |
Następne kroki
- Omówienie dostawców zasobów niestandardowych platformy Azure
- Szybki start: tworzenie niestandardowego dostawcy zasobów platformy Azure i wdrażanie zasobów niestandardowych
- Samouczek: tworzenie niestandardowych akcji i zasobów na platformie Azure
- Instrukcje: dodawanie zasobów niestandardowych do interfejsu API REST platformy Azure