Menambahkan Tindakan Kustom ke Azure REST API

Artikel ini akan menjelaskan tentang persyaratan dan cara terbaik untuk membuat titik akhir Azure Custom Resource Provider yang menerapkan tindakan kustom. Jika Anda tidak terbiasa dengan Azure Custom Resource Provider, lihat gambaran umum penyedia sumber daya kustom.

Cara menentukan Titik Akhir Tindakan

Titik akhir adalah URL yang menunjuk ke layanan, yang mengimplementasikan kontrak yang mendasari antara layanan dan Azure. Titik akhir didefinisikan dalam penyedia sumber daya kustom dan dapat berupa URL yang dapat diakses publik. Sampel di bawah ini memiliki tindakan yang disebut myCustomAction dan diimplementasikan oleh endpointURL.

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

Membangun titik akhir tindakan

Titik akhir yang mengimplementasikan tindakan harus menangani permintaan dan respons untuk API baru di Azure. Saat penyedia sumber daya kustom dengan tindakan dibuat, itu akan menghasilkan serangkaian API baru di Azure. Dalam hal ini, tindakan tersebut akan menghasilkan API tindakan Azure baru untuk POST panggilan:

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

Permintaan Masuk Azure API:

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

Permintaan ini kemudian akan diteruskan ke titik akhir dalam bentuk:

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

Demikian pula, respons dari titik akhir kemudian diteruskan kembali ke pelanggan. Respons dari titik akhir harus mengembalikan:

  • Dokumen objek JSON yang valid. Semua larik dan untai harus disarangkan di bawah objek atas.
  • Content-Type Header harus diatur ke "aplikasi/json; charset=utf-8".
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "myProperty1": "myPropertyValue1",
    "myProperty2": {
        "myProperty3" : "myPropertyValue3"
    }
}

Respons Azure Custom Resource Provider:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "myProperty1": "myPropertyValue1",
    "myProperty2": {
        "myProperty3" : "myPropertyValue3"
    }
}

Memanggil Tindakan Kustom

Ada dua cara utama untuk memanggil tindakan kustom dari penyedia sumber daya kustom:

  • Azure CLI
  • Templat Azure Resource Manager

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"
                                }
                            }'
Parameter Diperlukan Deskripsi
tindakan ya Nama tindakan yang didefinisikan dalam ResourceProvider.
ids ya ID sumber daya dari ResourceProvider.
isi permintaan tidak Isi permintaan yang akan dikirim ke titik akhir.

Templat Azure Resource Manager

Catatan

Tindakan memiliki dukungan yang terbatas dalam Templat Azure Resource Manager. Agar tindakan dalam templat dipanggil, nama tindakan harus menggunakan awalan list.

Contoh ResourceProvider dengan Tindakan Daftar:

{
  "properties": {
    "actions": [
      {
        "name": "listMyCustomAction",
        "routingType": "Proxy",
        "endpoint": "https://{endpointURL}/"
      }
    ]
  },
  "location": "eastus"
}

Contoh Templat 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'))]"
        }
    }
}
Parameter Diperlukan Deskripsi
resourceIdentifier ya ID sumber daya dari ResourceProvider.
apiVersion ya Versi API dari runtime sumber daya. Versi ini harus selalu "2018-09-01-preview".
functionValues tidak Isi permintaan yang akan dikirim ke titik akhir.

Langkah berikutnya