Menambahkan sumber daya kustom ke REST API Azure

Artikel ini akan menerangkan persyaratan dan praktik terbaik untuk membuat titik akhir Penyedia Sumber Daya Kustom Azure yang menerapkan tindakan kustom. Jika Anda tidak terbiasa dengan Penyedia Sumber Daya Kustom Azure, lihat ringkasan penyedia sumber daya kustom.

Cara menentukan titik akhir sumber daya

Titik akhir adalah URL yang menunjuk ke layanan yang mengimplementasikan kontrak yang mendasari antara layanan dan Azure. Titik akhir didefinisikan di penyedia sumber daya kustom dan dapat menjadi URL yang bisa diakses publik. Sampel di bawah ini memiliki resourceType bernama myCustomResource yang diimplementasikan oleh endpointURL.

Contoh ResourceProvider:

{
  "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}"
}

Membangun titik akhir sumber daya

Titik akhir yang mengimplementasikan resourceType harus menangani permintaan dan respons untuk API baru di Azure. Saat penyedia sumber daya kustom dengan resourceType dibuat, sumber daya kustom akan menghasilkan set API baru di Azure. Dalam hal ini, resourceType akan menghasilkan API sumber daya Azure baru untuk PUT, GET, dan DELETE untuk melakukan CRUD di satu sumber daya serta GET untuk mengambil semua sumber daya yang ada:

Memanipulasi Sumber Daya Tunggal (PUT, GET, dan DELETE):

/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResource/{myCustomResourceName}

Ambil Semua Sumber Daya (GET):

/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResource

Untuk sumber daya kustom, penyedia sumber daya kustom menawarkan dua jenis routingTypes: "Proxy" dan "Proxy, Cache".

tipe perutean proksi

ProxyroutingType memproksi semua metode permintaan ke titik akhir yang ditentukan di penyedia sumber daya kustom. Kapan menggunakan “Proxy”:

  • Perlu kontrol penuh atas respons.
  • Integrasi sistem dengan sumber daya yang ada.

Untuk selengkapnya tentang sumber daya "Proxy", lihat referensi proksi sumber daya kustom

tipe perutean cache proksi

Proxy, CacheroutingType hanya memproksi PUT dan metode permintaan DELETE menuju titik akhir yang ditentukan di penyedia sumber daya kustom. Penyedia sumber daya kustom akan secara otomatis mengembalikan permintaan GET berdasarkan apa yang telah disimpan dalam cache. Jika sumber daya kustom ditandai dengan cache, penyedia sumber daya kustom juga akan menambahkan / menimpa bidang dalam respons untuk membuat API Azure sesuai. Kapan menggunakan “Proxy, Cache”:

  • Membuat sistem baru yang tidak memiliki sumber daya yang ada.
  • Bekerja dengan ekosistem Azure yang ada.

Selengkapnya tentang sumber daya "Proxy, Cache", lihat referensi cache sumber daya kustom

Membuat sumber daya kustom

Ada dua cara utama untuk membuat sumber daya kustom dari penyedia sumber daya kustom:

  • Azure CLI
  • Templat Azure Resource Manager

Azure CLI

Buat sumber daya kustom:

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"
                            }
                        }
                    }'
Parameter Diperlukan Deskripsi
adalah-objek-penuh ya Menunjukkan bahwa objek properti menyertakan opsi lain seperti lokasi, tag, sku, dan/atau paket.
id ya ID sumber daya dari sumber daya kustom. ID ini harus ada dari ResourceProvider
properti ya Isi permintaan yang akan dikirim ke titik akhir.

Menghapus Sumber Daya Kustom Azure:

az resource delete --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/{resourceTypeName}/{customResourceName}
Parameter Diperlukan Deskripsi
id ya ID sumber daya dari sumber daya kustom. ID ini harus ada dari ResourceProvider.

Mengambil Sumber Daya Kustom Azure:

az resource show --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/{resourceTypeName}/{customResourceName}
Parameter Diperlukan Deskripsi
id ya ID sumber daya dari sumber daya kustom. ID ini harus ada dari ResourceProvider

Templat Azure Resource Manager

Catatan

Sumber daya mengharuskan agar respons berisi id, name yang sesuai, dan type dari titik akhir.

Templat Azure Resource Manager mengharuskan agar id, name, dan type dikembalikan dengan benar dari titik akhir downstream. Respons sumber daya yang dikembalikan harus berada di formulir:

Contoh respons titik akhir:

{
  "properties": {
    "myProperty1": "myPropertyValue1",
    "myProperty2": {
        "myProperty3": "myPropertyValue3"
    }
  },
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{customResourceName}",
  "name": "{customResourceName}",
  "type": "Microsoft.CustomProviders/resourceProviders/{resourceTypeName}"
}

Contoh Template 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"
                }
            }
        }
    ]
}
Parameter Diperlukan Deskripsi
resourceTypeName ya NamaresourceType yang ditentukan dalam penyedia sumber daya kustom.
resourceProviderName ya Nama instans penyedia sumber daya kustom.
customResourceName ya Nama sumber daya kustom.

Langkah berikutnya