Dodawanie zasobów 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ą zasoby 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 zasobu
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 typ zasobu o nazwie myCustomResource
implementowany przez endpointURL
element .
Przykładowy zasóbProvider:
{
"properties": {
"resourceTypes": [
{
"name": "myCustomResource",
"routingType": "Proxy, Cache",
"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 zasobu
Punkt końcowy, który implementuje element resourceType, musi obsługiwać żądanie i odpowiedź dla nowego interfejsu API na platformie Azure. Po utworzeniu niestandardowego dostawcy zasobów z właściwością resourceType zostanie wygenerowany nowy zestaw interfejsów API na platformie Azure. W takim przypadku zasób resourceType wygeneruje nowy interfejs API zasobów platformy Azure dla PUT
, GET
i , aby DELETE
wykonać operację CRUD dla jednego zasobu, a także GET
pobrać wszystkie istniejące zasoby:
Manipulowanie pojedynczym zasobem (PUT
, GET
i DELETE
):
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResource/{myCustomResourceName}
Pobierz wszystkie zasoby (GET
):
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResource
W przypadku zasobów niestandardowych dostawcy zasobów niestandardowych oferują dwa typy routingTypes: "Proxy
" i "Proxy, Cache
".
Typ routingu serwera proxy
Serwer proxy "Proxy
" routingType wszystkie metody żądania do punktu końcowego określonego w niestandardowym dostawcy zasobów. Kiedy należy używać "Proxy
":
- Wymagana jest pełna kontrola nad odpowiedzią.
- Integrowanie systemów z istniejącymi zasobami.
Aby dowiedzieć się więcej o zasobach "Proxy
", zobacz dokumentację niestandardowego serwera proxy zasobów
Typ routingu pamięci podręcznej serwera proxy
Serwery proxy typu routingu "Proxy, Cache
" i DELETE
żądają metod tylko PUT
do punktu końcowego określonego w niestandardowym dostawcy zasobów. Niestandardowy dostawca zasobów automatycznie zwraca GET
żądania na podstawie tego, co jest przechowywane w pamięci podręcznej. Jeśli zasób niestandardowy jest oznaczony pamięcią podręczną, niestandardowy dostawca zasobów będzie również dodawać/zastępować pola w odpowiedzi na zapewnienie zgodności interfejsów API platformy Azure. Kiedy należy używać "Proxy, Cache
":
- Tworzenie nowego systemu, który nie ma istniejących zasobów.
- Praca z istniejącym ekosystemem platformy Azure.
Aby dowiedzieć się więcej o zasobach "Proxy, Cache
", zobacz dokumentację dotyczącą niestandardowej pamięci podręcznej zasobów
Tworzenie zasobu niestandardowego
Istnieją dwa główne sposoby tworzenia zasobu niestandardowego od niestandardowego dostawcy zasobów:
- Interfejs wiersza polecenia platformy Azure
- Szablony usługi Azure Resource Manager
Interfejs wiersza polecenia platformy Azure
Utwórz zasób niestandardowy:
az resource create --is-full-object \
--id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/{resourceTypeName}/{customResourceName} \
--properties \
'{
"location": "eastus",
"properties": {
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3": "myPropertyValue3"
}
}
}'
Parametr | Wymagane | Opis |
---|---|---|
is-full-object | Tak | Wskazuje, że obiekt właściwości zawiera inne opcje, takie jak lokalizacja, tagi, jednostka SKU i/lub plan. |
identyfikator | Tak | Identyfikator zasobu niestandardowego. Powinno to istnieć poza dostawcą zasobów |
properties | Tak | Treść żądania, która zostanie wysłana do punktu końcowego. |
Usuwanie zasobu niestandardowego platformy Azure:
az resource delete --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/{resourceTypeName}/{customResourceName}
Parametr | Wymagane | Opis |
---|---|---|
identyfikator | Tak | Identyfikator zasobu niestandardowego. Powinno to istnieć poza dostawcą zasobów. |
Pobieranie zasobu niestandardowego platformy Azure:
az resource show --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/{resourceTypeName}/{customResourceName}
Parametr | Wymagane | Opis |
---|---|---|
identyfikator | Tak | Identyfikator zasobu niestandardowego. Powinno to istnieć poza dostawcą zasobów |
Szablon usługi Azure Resource Manager
Uwaga
Zasoby wymagają, aby odpowiedź zawierała odpowiednie id
wartości , name
i type
z punktu końcowego.
Szablony usługi Azure Resource Manager wymagają poprawnego id
zwracania elementów , name
i type
z podrzędnego punktu końcowego. Zwrócona odpowiedź zasobu powinna mieć postać:
Przykładowa odpowiedź punktu końcowego :
{
"properties": {
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3": "myPropertyValue3"
}
},
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{customResourceName}",
"name": "{customResourceName}",
"type": "Microsoft.CustomProviders/resourceProviders/{resourceTypeName}"
}
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",
"resources": [
{
"type": "Microsoft.CustomProviders/resourceProviders/{resourceTypeName}",
"name": "{resourceProviderName}/{customResourceName}",
"apiVersion": "2018-09-01-preview",
"location": "eastus",
"properties": {
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3": "myPropertyValue3"
}
}
}
]
}
Parametr | Wymagane | Opis |
---|---|---|
resourceTypeName | Tak | Nazwawłaściwości resourceType zdefiniowanej w niestandardowym dostawcy zasobów. |
resourceProviderName | Tak | Nazwa wystąpienia niestandardowego dostawcy zasobów. |
customResourceName | Tak | Nazwa zasobu niestandardowego. |
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 akcji niestandardowych do interfejsu API REST platformy Azure
- Dokumentacja: dokumentacja niestandardowego serwera proxy zasobów
- Dokumentacja: Dokumentacja niestandardowej pamięci podręcznej zasobów