无法访问ADLS帐户'(accountname)'
我正在尝试使用azure数据工厂v2将数据复制到Azure数据存储池。我创建了数据湖商店,并在article here之后创建了一个AD网络应用程序,并确保该帐户可以访问数据湖商店。不过,我收到以下错误,每当我试图运行一个管道,涉及使用数据湖店作为一个水槽的单一副本活动:无法访问ADLS帐户'(accountname)'
活动复制(副本活动名称)失败:无法检测区的链接服务'AzureDataLakeStore':'LS_DataLakeStore',错误为'无法访问ADLS帐户'(数据湖店帐号名称)'。请确保它已被创建。',请明确指定由connectVia属性引用的集成运行时的位置,以避免在需要时检测区域。
我有三重检查帐户名是否正确。我已授予AD应用程序“所有者”对订阅的访问权限,以确保它不是权限问题。我甚至试图创建一个Adf集成运行时,这样我就可以通过错误提示的'connectVia'属性来指定它,所有这些都没有运气。
想法为什么ADF似乎无法看到我的数据湖店?
这里是我的链接业务的JSON:
{
"name": "LS_DataLakeStore",
"properties": {
"type": "AzureDataLakeStore",
"typeProperties": {
"dataLakeStoreUri": "adl://{my adls account name}.azuredatalakestore.net/",
"servicePrincipalId": "{the application id of the AD account I created}",
"servicePrincipalKey": {
"type": "SecureString",
"value": "{the value of the key for the AD account I generated}"
},
"tenant": "{my tenant id (I also tried using the tenant domain name here as well)}",
"subscriptionId": "{the subscription id in which the ADF and ADLS are located}",
"resourceGroupName": "{the resource group name in which the ADF and ADLS are located}"
}
}
}
感谢您使用Azure的数据工厂,安德鲁。
根据您附加的链接服务有效负载,我认为您使用的是“Azure Data Lake Store”的“服务主体身份验证”,后面是https://docs.microsoft.com/en-us/azure/data-factory/connector-azure-data-lake-store#using-service-principal-authentication的指导,对吧?
通常,错误应该由提供的服务主体没有检测Azure Data Lake Store的区域的权限引起。请至少授予Azure Data Lake Store上帐户访问控制(IAM)中的“读者”角色。详细步骤:
- 转到Azure的门户网站,发现该数据湖Store帐户
- 点击“访问控制(IAM)”上的刀片数据湖店
- 点击“添加”,在刀片“访问控制(IAM)”
- 集“角色”,以“读者”,并指定您创建
在此之后,AAD的应用程序,请尝试重新运行复制活动。
请确保您在linkeservice typeProperties中提供的subscriptionId,resourceGroupName确实是数据湖帐户所属的。
-
请确保您有授予至少“读者”的角色给用户/ Serviceprincipal上的数据湖帐户,这里是如何使它:
一个。转到Azure Portal,找到Data Lake Store帐户
b。单击Data Lake Store刀片上的“访问控制(IAM)”
c。单击“访问控制(IAM)”的刀片中的“添加”
d。将“角色”设置为“阅读器”,并指定您创建的AAD应用程序
-
如果仍然无效,请尝试指定执行位置。
对于ADFV1,executionLocation是复制活动“typeProperties”的属性;
“活动”:
{ “名”: “SqlServertoAzureSearchIndex”, “说明”: “复制活动”, “类型”: “复制”, ... “typeProperties”:{ “源”:{ “类型”:“SqlSource” }, “下沉”:{ “类型”: “AzureSearchIndexSink” }, “executionLocation”: “西美”, }, .. 。 } ]
对于ADFV2,您AzureDataLakeStoreLinkedService指定connectVia链接到CloudIR这样的:
"integrationRuntimes": [
{
"name": "cloudIR",
"properties": {
"type": "Managed",
"typeProperties": {
"computeProperties": {
"location": "East US 2"
}
}
}
}
]
您可能需要告诉ADF使用在V2特定的集成运行,而不是依靠使用默认IR进行自动区域检测。
首先,在您的Azure的数据湖店所在的地区创建一个新的集成运行环境:
https://docs.microsoft.com/en-us/azure/data-factory/create-azure-integration-runtime#create-azure-ir
然后使用参考connectVia属性添加到您的Azure的数据湖将链接服务于新IR: