ADF Pipeline 耗时太长,因此授权已过期

问题描述 投票:0回答:1

运行分页 REST 调用,尝试访问分成页面的大型数据集。 事先使用三足身份验证,自动将刷新令牌和后续不记名令牌保存(发布请求)到 Azure Key Vault 密钥中。然后,我读取一次 -> 保存到变量,然后在 REST Web 活动中使用。
当进行 REST Web 调用时,会生成分页结果。

{
"pagination": {
    "cursorState": "ck384730randomValue",
    "limit": 40
},
"results": [
    {},
    {},
    {}
}
}

光标状态是指向下一页的指针,意味着下一个请求是

https:/<baseUrl>/endpoint?cursorState=<The value from the JSON>

我使用 Until 活动循环页面。
limit=40 是数据供应商提供的最大值。 (默认为 20)

然而问题出现了,经过这么多页之后,存储在密钥库中的不记名令牌过期了,整个事情失败了。

我只能通过在until活动内的每个调用中重复授权调用来解决它。但我担心对 keyvault 进行如此多的调用会产生成本影响。 还有其他选择吗?我正在寻找一种更智能的方法来管理此类问题。

azure azure-data-factory
1个回答
0
投票

通常当您调用API生成不记名令牌时,它会显示令牌有效期,如下所示

我认为创建一个 UNTIL 循环并在其中生成令牌。令牌生成后,将其存储到变量中,然后放置 WAIT 活动并让它等待令牌到期时间。

您还需要添加退出循环的条件,在您的情况下,您可以将页面循环计数器(在 for 循环中用于从每个页面下载数据)与总页面进行比较。

@greater(variables('varCounter'),40)

您可以在管道的开头添加此令牌循环,并让它继续独立运行,并添加独立于此循环的其他活动流。这样当页面达到大于40时就会自动退出。

您可以添加 For 循环并添加下载页面所需的活动。 for 循环条件应该看起来像这样

@range(variables('varCounter'),40)

将令牌添加到 AKV 中是没有意义的,因为不记名令牌将在一段时间后过期。

© www.soinside.com 2019 - 2024. All rights reserved.