Udostępnij za pośrednictwem


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

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, GETi , aby DELETE wykonać operację CRUD dla jednego zasobu, a także GET pobrać wszystkie istniejące zasoby:

Manipulowanie pojedynczym zasobem (PUT, GETi 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 idwartości , namei type z punktu końcowego.

Szablony usługi Azure Resource Manager wymagają poprawnego idzwracania elementów , namei 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