【问题标题】:Copy Sharepoint Excel file with Azure Data Factory using MSGraph使用 MSGraph 使用 Azure 数据工厂复制 Sharepoint Excel 文件
【发布时间】:2021-11-05 09:16:09
【问题描述】:

我需要将 Sharepoint 上的 Excel 文件的数据复制到 Azure SQL DB。这需要在 Azure 数据工厂中完成。我在下面找到了解决方案: https://docs.microsoft.com/en-gb/azure/data-factory/connector-sharepoint-online-list?tabs=data-factory#copy-file-from-sharepoint-online 虽然这似乎可行,但缺点是应用注册需要获得 Sharepoint 权限“Sites.Read.All”。这就是为什么我一直在寻找使用 MS Graph 执行此操作的原因,因为 MS Graph 允许“Sites.Selected”权限。这是一个重要的问题,因为我想避免授予访问整个 Sharepoint 的权限(最好我只授予访问一个文件夹的权限,但我根本没有找到这个解决方案)。但是,我没有找到任何方法可以在 ADF 中使用 MS Graph。

谁有一些关于如何做到这一点的提示?在我们当前的架构中,不可能/不允许使用带有 Azure Functions 或 Logic 应用的解决方案。

提前致谢。

【问题讨论】:

  • 目前尚不清楚您是否需要有关如何实施 Sites.Selected 对应用程序的权限或如何限制应用程序仅访问一个文件的帮助。至于 Site.Selected,您必须使用 Create Site Permission 创建权限,然后在 AAD 应用注册时添加 Sites.Selected。让我知道这是否是你需要的,我会用一些代码写一个答案。
  • 至于文件级访问,我认为 MS Graph 目前不支持应用程序。
  • 对不起,如果我的问题不清楚。我正在寻找使用 ADF 将数据从 Sharepoint Excel 复制到接收器的最佳方法。为此,我发现可以通过此链接上的网络活动来执行此操作:docs.microsoft.com/en-gb/azure/data-factory/… 为此,我需要使用 Sharepoint 权限进行应用注册。这仅允许所有站点访问。我还找到了 MS Graph(但没有找到如何实现它)。我只是在寻找最好的方法。如果您有其他解决方案,也欢迎他们

标签: azure sharepoint microsoft-graph-api azure-data-factory


【解决方案1】:

在您的情况下,如果您可以从工作流程中调用 MS Graph API,假设您已经注册了应用程序,那么您需要使用 Create permission 作为站点管理员用户为您的应用程序创建站点权限。

POST https://graph.microsoft.com/v1.0/sites/Site-ID/permissions
{
    "roles": [
        "read"
    ],
    "grantedToIdentities": [
        {
            "application": {
                "id": "your-app-client-id",
                "displayName": "Test App"
            }
        }
    ]
}

然后将应用程序权限 Site.Selected 分配给您在 AAD 门户上注册的应用程序。这样,您的应用将只能访问该特定网站,而不是您的租户中的所有网站

【讨论】:

  • 在 AAD 门户中授予 Sites.Read.All 权限时是否也需要这样做?虽然这似乎是我的首选方式,但我没有找到使用 MS Graph API 在 ADF 中复制 Excel 文件的方法。你知道吗?
  • 当您使用 Site.Selected 权限时,如果您只需要应用程序访问一个站点,则不需要 Sites.Read.All - 最佳实践。您的应用网站权限已创建并添加了应用权限,您可以轻松使用Graph Workbooks API 或使用 [Files API[(docs.microsoft.com/en-us/graph/api/resources/…) 下载文件
  • 感谢您的回复,这一切都对我有用。
  • 太棒了。如果它解决了您的情况。请接受答案以帮助其他社区用户。
  • 对于 MSGraph 解决方案。使用“Sites.Read.All”权限进行 AppRegistration 就足够了,还是应该在 Sharepoint 中也授予一些权限?因为我向应用授予了 Site.Read.All 权限,但我收到了 InvalidAuthenticationToken 错误。
【解决方案2】:

在源选项卡下的复制活动中,您可以考虑使用 HTTP 连接器类型数据集或 REST 连接器类型数据集,这有助于您使用 MSGraph API 进行 REST 调用。

在 Azure 数据工厂中可以使用上述两种类型的连接器

  1. 使用 Azure 数据工厂或 Azure Synapse Analytics 从 HTTP 终结点复制数据 | Docs
  2. 使用 Azure 数据工厂在 REST 端点之间复制和转换数据 | Docs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-06
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 2021-05-06
    • 2021-07-17
    相关资源
    最近更新 更多