如何使用数据工厂从RestAPI复制数据并将其保存在Datalake中



我试图从REST API获取数据,并将json字符串保存到DataLake中,但我收到了一个错误。我遵循了这里提到的步骤https://learn.microsoft.com/en-us/azure/data-factory/connector-rest&https://www.alexvolok.com/2019/adfv2-rest-api-part1-oauth2/

我尝试连接的API使用OAuth2,因此我需要首先获取访问令牌,然后执行get请求以获取实际数据。

以下是我遵循的步骤

  1. 在管道中创建Web HTTP请求,并在请求主体中传递client_ID、客户端机密、用户名、密码和授予类型。当我调试pipline时,我确实得到了步骤2中需要的Access_token。

  2. 在第二步中,我有一个复制活动,它使用web的输出(access_token(来验证第二个RESTGET请求,但这正是我面临很多问题的地方。我使用的代码是"@concat('Bearer',activity('GetAccessToken'(.output.access_token(">

  3. 在步骤3中,我有两个数据集和两个链接的服务,数据集1是一个REST数据集,它有链接到REST链接服务的基本url和相对url,其次,汇点数据集连接到AZURE数据采集存储。

  4. 在源数据集中,我传递额外的头Authorization=@concat('Bearer',activity('GetAccessToken'(.output.access_token(,理想情况下,因为如果不发送参数,我要调用的API将返回空;请求主体";这是正确的吗?请求主体将看起来像这样";start_ date=2020/07/17&end_date=2020/07/18";。

  5. 接收器是存储在DataLake中的一个简单Json数据集。

当我尝试调试时,我得到的错误如下

但我得到了以下错误

{
"errorCode": "2200",
"message": "Failure happened on 'Source' side. ErrorCode=UserErrorHttpStatusCodeIndicatingFailure,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=The HttpStatusCode 401 indicates failure. { "Error": { "Message":"Authentication failed: Invalid headers", "Server-Time":"2020-07-27T06:59:24", "Id":"6AAF87BC-5634-4C28-8626-810A19B86BFF" } },Source=Microsoft.DataTransfer.ClientLibrary,'",
"failureType": "UserError",
"target": "CopyDataFromAPI",
"details": []
}

如果我做错了什么,请告诉我。

我知道这是一个简单的问题,

对于那些正在寻找答案的人来说也是如此。

请确保REST源URL以HTTPS://而不是HTTP://开头。我猜Azure不会将标头传递到以HTTP://开始的URL,这很奇怪,因为POSTMAN和python脚本发送标头没有问题。

相关内容

  • 没有找到相关文章

最新更新