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