AWS-如何在Lambda进程之间共享访问令牌?

时间:2018-12-03 16:59:42

标签: amazon-web-services aws-lambda

首先,我对Lambda的工作方式有疑问:

如果仅由1个SQS队列触发,并且该队列现在包含100条消息,它将顺序创建和拆除100个lambda进程吗?还是会并行执行?

我的第二个问题是主要问题: 我的lambda的工作是请求一个每小时过期的访问令牌(用于外部服务),并使用它,对该外部服务执行一些操作。

现在,我希望能够缓存该令牌,并且仅每1小时要求一次,而不是每次使用lambda进行请求时都需要。

鉴于Lambda的工作原理,有没有办法通过代码做到这一点? 如何确保所有Lambdas进程使用相同的访问令牌? (我知道我可以创建一个新的Redis实例并使它们全部指向它,但是我正在寻找“更简单”的解决方案)

1 个答案:

答案 0 :(得分:2)

您可以将令牌填充到SSM参数存储中。您可以加密该值。 Lambda可以检查值的上次修改日期,以监视到期和未到期的时间。没有要维护的Redis实例,该值将被加密。

https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html

您也可以为此使用DynamoDB。由于它是无服务器的,因此其开销比Redis低。如果您有大量并发Lambda,则这可能比SSM更可取,因为您可能会遇到API上的速率限制。需要做更多的工作,因为您必须设置DynamoDB表。

另一个选择是拥有一个“父” Lambda函数,该函数获取API令牌并调用“工人” Lambda,并将令牌作为参数传递。