Lambda函数导致共享访问令牌竞争条件|无服务器框架| Nodejs



我有一个lambda nodejs函数,它基本上将请求转发到第三方资源服务器,该第三方服务器需要在我的后端生成一个访问令牌并附加到请求(Axios)。只有最新发布的令牌有效,一旦发布新的令牌,之前生成的令牌将失效。

问题:如果后台同时接收到调用上述函数的两个或多个请求,其中一个请求将具有竞争条件并导致使用无效的访问令牌

使用无服务器框架(AWS)与Nodejs。如果我错了,请纠正我,但没有办法像在express框架中一样共享变量,因为每个函数请求都是完全独立的。我应该将令牌存储在数据库中吗?(我个人不喜欢这个解决方案)我还假设缓存对sls函数没有意义。

欢迎提出建议或解决方案。

注意:多个其他函数使用同一资源服务器的流。

看起来您希望按顺序处理所有请求。在这种情况下,您可以将最大并发性设置为1,并且不会同时运行两个lambda

话虽这么说,它不能再扩展了,它有点违背了无服务器基础设施的好处。

Lambda是无状态计算,因此如果需要共享状态,则需要构建它。如果您的吞吐量很低,dynamo足够便宜,并且具有一致性保证,可能对您有效。

如果没有,redis将是一个很好的选择,尤其是像redislabs这样的托管解决方案,它提供了一个HTTP API,非常适合Lambda。

最新更新