我正在使用ADF函数活动在数据工厂管道中调用http触发的Azure函数应用。它在调试模式下成功执行,但是当我发布该管道并使用数据工厂触发器运行相同的代码时,我得到以下错误-
{
"errorCode": "3600",
"message": "Object reference not set to an instance of an object.",
"failureType": "UserError",
"target": "AzureFunction"
}
请告诉我是否需要更改一些其他属性,或者我在这里遗漏了任何内容。还有什么方法可以查看通过ADF中的函数活动调用函数应用程序时生成的URL。
我尝试使用ADF中的网络活动调用同一功能的应用程序,并且在调试和触发模式下均能正常工作。
Azure功能的链接服务代码
{
"name": "linkedservicesAzureFunctions",
"type": "Microsoft.DataFactory/factories/linkedservices",
"properties": {
"typeProperties": {
"functionAppUrl": "https://xyz.azurewebsites.net",
"functionKey": {
"type": "AzureKeyVaultSecret",
"store": {
"type": "LinkedServiceReference",
"referenceName": "linkedservicesKeyVault"
},
"secretName": "functions-host-key-default"
}
},
"type": "AzureFunction"
}
}
答案 0 :(得分:1)
Azure数据工厂中存在一个已知的错误,他们正在对此进行处理。现在,如果要使用.NET SDK创建Azure数据工厂,则需要在Azure Function Activity中设置此类标题。
new AzureFunctionActivity
{
Name = "CopyFromBlobToSnowFlake",
LinkedServiceName = new LinkedServiceReference(pipelineStructure.AzureFunctionLinkedService),
Method = "POST",
Body = body,
FunctionName = "LoadBlobsIntoSnowFlake",
Headers = new Dictionary<string, string>{ },
DependsOn = new List<ActivityDependency>
{
new ActivityDependency{
Activity = "CopyFromOPSqlServerToBlob",
DependencyConditions= new List<string>{"Succeeded" }
}
}
}
如果要通过UI创建Azure Function活动,则只需更新活动的描述,然后发布和标题将自动获得初始化。