gpt4 book ai didi

Azure 数据工厂通过访问 key 连接到 Blob 存储

转载 作者:行者123 更新时间:2023-12-02 05:51:38 25 4
gpt4 key购买 nike

我正在尝试在 Azure 数据工厂中构建一个非常基本的数据流,从 Blob 存储中提取 JSON 文件,对某些列执行转换,然后存储在 SQL 数据库中。我最初使用托管身份对存储帐户进行身份验证,但在尝试测试与源的连接时收到以下错误:

com.microsoft.dataflow.broker.MissingRequiredPropertyException: account is a required property for [myStorageAccountName]. com.microsoft.dataflow.broker.PropertyNotFoundException: Could not extract value from [myStorageAccountName] - RunId: xxx

我还在工厂验证输出中看到以下消息:

[MyDataSetName] AzureBlobStorage does not support SAS, MSI, or Service principal authentication in data flow.

有了这个,我假设我需要做的就是将我的 Blob 存储链接服务切换到帐户 key 身份验证方法。当我切换到帐户 key 身份验证并选择我的订阅和存储帐户后,在测试连接时出现以下错误:

Connection failed Fail to connect to https://[myBlob].blob.core.windows.net/: Error Message: The remote server returned an error: (403) Forbidden. (ErrorCode: 403, Detail: This request is not authorized to perform this operation., RequestId: xxxx), make sure the credential provided is valid. The remote server returned an error: (403) Forbidden.StorageExtendedMessage=, The remote server returned an error: (403) Forbidden. Activity ID: xxx.

我尝试直接从 Azure 进行选择,并手动输入 key ,但无论哪种方式都会出现相同的错误。需要注意的一件事是存储帐户仅允许访问指定的网络。我尝试连接到另一个公共(public)存储帐户,并且能够正常访问。 ADF 帐户具有存储帐户贡献者角色,我添加了我当前工作地点的 IP 地址以及我在此处找到的 Azure 数据工厂的 IP 范围:https://learn.microsoft.com/en-us/azure/data-factory/azure-integration-runtime-ip-addresses

另请注意,我目前有大约 5 个复制数据任务与托管身份完美配合,但我需要开始执行更复杂的操作。

这似乎是与 Unable to create a linked service in Azure Data Factory 类似的问题但我分配的存储帐户贡献者和所有者角色应取代回复中建议的读者角色。我也不确定发帖者使用的是公共(public)存储帐户还是私有(private)存储帐户。

提前谢谢您。

最佳答案

article listed above的最底部关于集成运行时的白名单 IP 范围,Microsoft 表示如下:

When connecting to Azure Storage account, IP network rules have no effect on requests originating from the Azure integration runtime in the same region as the storage account. For more details, please refer this article.

我与 Microsoft 支持人员讨论了此问题,问题是白名单公共(public) IP 地址不适用于同一区域内的资源,因为由于资源位于同一网络上,它们使用私有(private) IP 而不是公共(public) IP 相互连接.

有四个选项可以解决原始问题:

  • 允许从存储帐户中的防火墙和虚拟网络下的所有网络进行访问(如果您要存储敏感数据,显然这是一个问题)。我对此进行了测试,它有效。
  • 创建在不同区域运行的新 Azure 托管集成运行时。我也测试了这个。我的 ADF 数据流在 East 区域运行,我创建了一个在 East 2 中运行的运行时,它立即运行。对我来说,这里的问题是,在推送到产品之前,我必须让安全部门对此进行审查,因为我们将通过公共(public)网络发送数据,即使它是加密的等,它仍然不如让两个资源相互通信那么安全同一网络中的其他人。
  • 使用单独的事件,例如 Spark 或 SSIS 包等 HDInsight 事件。我确信这会起作用,但 SSIS 的问题是成本,因为我们必须启动 SSIS 数据库,然后支付计算费用。您还需要在管道中执行多个事件,以在执行之前和之后启动和停止 SSIS 管道。而且我不想仅仅为了这个而学习 Spark。
  • 最后,我使用的有效解决方案是创建一个新连接,将 Blob 存储替换为数据集的 Data Lakes Gen 2 连接。它就像一个魅力。与 Blob 存储连接不同,Azure Data Lakes Storage Gen 2 支持托管标识:per this article.一般来说,连接类型越具体,功能就越有可能满足特定需求。

关于Azure 数据工厂通过访问 key 连接到 Blob 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61706462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com