当我执行多个调用时,如何保持同一Azure功能处于活动状态



我想对Azure函数执行多次调用,如果我在1小时内多次调用该函数,该函数将使用完全相同的会话。我该怎么做?

背景:我正在使用一个函数GetAccessToken((,它连接到OAuth端点来检索令牌。我想防止在几分钟内连接到OAuth服务器20次,因此我想在Azure函数中保留AccessToken,并在必要时返回它。

示例3个电话:https://funcapp12930.azurewebsites.net/api/HttpTrigger1
30分钟后呼叫1:AccessToken'bearer ey03193013459'59分钟后呼叫2:AccessToken'bearer ey03193013459'2小时后呼叫3:AccessToken"承载ba204345314555">

您可以按照Gaurav在评论中的建议进行操作。

  • 当请求到来时,检查缓存(Redis或Cosmos db(
  • 如果它不在缓存中,则获取令牌并将其存储在缓存中
  • 返回令牌

但是,您引入了一个潜在的安全问题。如果缓存不安全,那么有人可能会获得令牌。

您需要将减少对OAUTH服务器的调用的好处与Cache的安全风险和额外成本进行比较。

使用持久功能和编排模式。

https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-orchestrations?tabs=csharp

您创建一个获取访问令牌的azure主函数,然后激活另一个函数20次,并将令牌传递给每次运行。

最新更新