Azure REST API özel eylemler ekleme
Bu makalede, özel eylemleri uygulayan Azure özel kaynak sağlayıcısı uç noktaları oluşturmak için gereksinimler ve en iyi yöntemler sunulacaktır. Azure özel kaynak sağlayıcıları hakkında bilginiz yoksa bkz. özel kaynak sağlayıcılarına genel bakış.
Eylem uç noktası tanımlama
Uç nokta , BT ile Azure arasında temel alınan sözleşmeyi uygulayan bir hizmete işaret eden bir URL 'dir. Uç nokta özel kaynak sağlayıcısında tanımlanmıştır ve herkese açık olarak erişilebilen herhangi bir URL olabilir. Aşağıdaki örnekte, tarafından uygulanan adlı bir eylem vardır myCustomAction endpointURL .
Örnek 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}"
}
Eylem uç noktası oluşturma
Bir eylemi uygulayan bir uç noktanın , Azure 'daki yeni API için isteği ve yanıtı işlemesi gerekir. Bir eylem içeren özel bir kaynak sağlayıcısı oluşturulduğunda, Azure 'da yeni bir API kümesi oluşturur. Bu durumda, eylem çağrılar için yeni bir Azure eylem API 'SI oluşturacaktır POST :
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomAction
Azure API gelen Istek:
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"
}
}
Bu istek daha sonra şu biçimdeki uç noktaya iletilir:
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"
}
}
Benzer şekilde, uç noktadan gelen yanıt daha sonra müşteriye iletilir. Uç noktadan gelen yanıt şunu döndürmelidir:
- Geçerli bir JSON nesne belgesi. Tüm diziler ve dizeler üst nesne altında iç içe olmalıdır.
Content-TypeÜst bilgi, "Application/JSON; olarak ayarlanmalıdır charset = UTF-8 ".
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3" : "myPropertyValue3"
}
}
Azure özel kaynak sağlayıcısı yanıtı:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3" : "myPropertyValue3"
}
}
Özel bir eylem çağırma
Özel bir eylemi özel bir kaynak sağlayıcısında çağırmanın iki ana yöntemi vardır:
- Azure CLI
- Azure Resource Manager Şablonları
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"
}
}'
| Parametre | Gerekli | Açıklama |
|---|---|---|
| eylem | Yes | ResourceProvider'da tanımlanan eylemin adı. |
| ayrılacak | Yes | ResourceProvider'ıN kaynak kimliği. |
| İstek gövdesi | eşleşen | Uç noktaya gönderilecek istek gövdesi. |
Azure Resource Manager Şablonu
Not
Eylemlerin Azure Resource Manager şablonlarda sınırlı desteği vardır. Eylemin bir şablon içinde çağrılması için, list adının öneki içermesi gerekir.
Liste eylemiyle örnek ResourceProvider :
{
"properties": {
"actions": [
{
"name": "listMyCustomAction",
"routingType": "Proxy",
"endpoint": "https://{endpointURL}/"
}
]
},
"location": "eastus"
}
Örnek Azure Resource Manager şablonu:
{
"$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'))]"
}
}
}
| Parametre | Gerekli | Açıklama |
|---|---|---|
| ResourceIdentifier kimlikli | Yes | ResourceProvider'ıN kaynak kimliği. |
| apiVersion | Yes | Kaynak çalışma zamanının API sürümü. Bu her zaman "2018-09-01-Önizleme" olmalıdır. |
| functionValues | eşleşen | Uç noktaya gönderilecek istek gövdesi. |