Azure REST API'ye Özel Eylemler Ekleme
Bu makale, özel eylemler uygulayan Azure Özel Kaynak Sağlayıcısı uç noktaları oluşturmaya yönelik gereksinimleri ve en iyi yöntemleri gözden geçirecektir. Azure Özel Kaynak Sağlayıcıları hakkında bilginiz yoksa özel kaynak sağlayıcılarına genel bakışa bakın.
Eylem Uç Noktası tanımlama
Uç nokta, bir hizmeti işaret eden ve azure ile arasındaki temel sözleşmeyi uygulayan BIR URL'dir. Uç nokta özel kaynak sağlayıcısında tanımlanır ve genel olarak erişilebilen herhangi bir URL olabilir. Aşağıdaki örnekte tarafından endpointURL
uygulanan adlı myCustomAction
bir eylem vardır.
Ö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
Eylem uygulayan bir uç nokta, Azure'da yeni API'nin isteğini ve yanıtını işlemelidir. Eylem içeren bir özel 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 POST
yeni bir Azure eylem API'sini oluşturur:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomAction
Azure API Gelen İsteği:
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 şekilde 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 müşteriye geri iletilir. Uç noktadan gelen yanıt şu değeri döndürmelidir:
- Geçerli bir JSON nesne belgesi. Tüm diziler ve dizeler üst nesnenin altına yerleştirilmelidir.
- Üst
Content-Type
bilgi "application/json; 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 Eylem Çağırma
Özel bir kaynak sağlayıcısından özel eylem çağırmanın iki ana yolu 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 |
---|---|---|
action | Evet | ResourceProvider'da tanımlanan eylemin adı. |
Kimlik | Evet | ResourceProvider'ın kaynak kimliği. |
istek gövdesi | No | Uç noktaya gönderilecek istek gövdesi. |
Azure Resource Manager Şablonu
Not
Eylemlerin Azure Resource Manager Şablonlarında sınırlı desteği vardır. Eylemin bir şablonun içinde çağrılabilmesi için, adında öneki list
içermesi gerekir.
Liste Eylemi ile Ö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 | Evet | ResourceProvider'ın kaynak kimliği. |
apiVersion | Evet | Kaynak çalışma zamanının API sürümü. Bu her zaman "2018-09-01-preview" olmalıdır. |
functionValues | No | Uç noktaya gönderilecek istek gövdesi. |