2017-03-01 45 views
1

我正在尝试使用Azure SDK在Visual Studio中使用自定义ADF活动将数据写入ADLS。我创建的管道将被部署到现有的ADF中,该ADF已经定义了ADLS和批量链接服务。 我的问题是这样的:在自定义活动方法中,如何使用现有的ADLS链接服务来写入数据?Azure ADF自定义活动与现有的ADLS链接服务

此问题与此类似:ADF - C# Custom Activity但我不认为我可以简单地提起连接字符串,因为链接服务正在使用我的SPN,而作为开发人员,我不允许知道SPN密钥。

以下是链接服务。

{ 
    "name": "AzureDataLakeStoreLinkedService", 
    "properties": { 
     "hubName": "****-d-****-adf_hub", 
     "type": "AzureDataLakeStore", 
     "typeProperties": { 
      "dataLakeStoreUri": "adl://***************.azuredatalakestore.net/", 
      "servicePrincipalId": "*****-**-****-****-************", 
      "servicePrincipalKey": "**********", 
      "tenant": "********.com" 
     } 
    } 
} 

在自定义活动我得到链接业务的保持:

var output = activity.Outputs[0]; 
var inputLinkedService = linkedServices.First(linkedService => linkedService.Name == _ADLSLinkedServiceName).Properties.TypeProperties as AzureDataLakeStoreLinkedService; 

- 现在怎么办?

回答

1

您只能使用上述方法调用获取文件路径和链接服务帐户名称等信息。

您在这里遇到的问题是ADF自定义活动作为单独的应用程序在Azure批计算服务中运行。它不理解已经在ADF中设置的链接服务认证(会话令牌),并且您将无法在C#中找到它。

解决方案是将自定义活动作为Azure应用程序在Azure Active Directory域的上下文中注册!....是的,认真!

完成后,您可以授予应用程序访问权限,以便从数据存储区读取/写入数据。

看看我的博客。我写了一篇关于正是这个帖子:

https://www.purplefrogsystems.com/paul/2016/12/azure-data-lake-authentication-from-azure-data-factory/

警告:PowerShell命令已经被superceeded,因为现在你可以实际登记在门户刀片的应用。

+0

谢谢Paul,理解。我认为我应该对解决方案感到惊讶,但是我越用ADF就越不惊讶。 –