Я пытаюсь вызвать функцию Azure из ADF. Функция Azure имеет Route, реализованный, как показано ниже.
[FunctionName("UpdateStatus_V1")]
public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "post", Route = "V1/UpdateStatus")] HttpRequest req, ILogger log)
Кроме того, у файла хоста есть routePrefix в Azure Function.
"http": {
"routePrefix": "DeltaAPI"
}
URI в приложении Function выглядит следующим образом.
https://functionAPP.azurewebsites.net/DeltaAPI/V1/UpdateStatus?code=secret
Когда я пытаюсь вызвать эту функцию из фабрики данных Azure, используя функцию Activity - я получаю эту ошибку
{
"errorCode":"3608",
"message":"Call to provided Azure function '' failed with status-'NotFound' and message - 'Invoking Azure function failed with HttpStatusCode - NotFound.'.",
"failureType":"UserError",
"target":"Azure Function1"
}
Я выполнил рекомендацию согласно документу https://docs.microsoft.com/en-us/azure/data-factory/control-flow-azure-function-activity#routing-and-queries, а код конвейера adf указан ниже:
{
"name": "FunctionTest",
"properties": {
"activities": [
{
"name": "Azure Function1",
"type": "AzureFunctionActivity",
"dependsOn": [],
"policy": {
"timeout": "7.00:00:00",
"retry": 0,
"retryIntervalInSeconds": 30,
"secureOutput": false,
"secureInput": false
},
"userProperties": [],
"typeProperties": {
"functionName": "V1/UpdateStatus",
"method": "POST",
"headers": {
"Content-Type": "application/json"
},
"body": {
"value": "@json( '{\n \"transactionid\": \"5d283e11e62943ceb2e6e0bb5fe4898f\",\n \"status\": \"Completed\",\n \"Description\": \"\"\n }')",
"type": "Expression"
}
},
"linkedServiceName": {
"referenceName": "AzureFunction",
"type": "LinkedServiceReference"
}
}
],
"annotations": []
}
}