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

Gam*_*007 7 amazon-web-services aws-lambda

首先我有一个关于 Lambda 工作方式的问题:

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

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

现在,我希望能够缓存该令牌,并且只每 1 小时请求一次,而不是每次使用 lambda 发出请求时。

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

myr*_*ack 7

您可以将令牌填充到 SSM 参数存储中。您可以加密该值。Lambda 可以检查该值的最后修改日期,以监控到期时间和续订时间。无需维护 Redis 实例,并且值将被加密。

\n\n

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

\n\n

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

\n\n

另一种选择是使用 \xe2\x80\x9cparent\xe2\x80\x9d Lambda 函数,该函数获取 API 令牌并调用 \xe2\x80\x9cworker\xe2\x80\x9d Lambda 并将令牌作为参数传递。

\n