首先,我有一个关于Lambda工作方式的问题:
如果它只由一个SQS队列触发,并且该队列现在包含100条消息,那么它会按顺序创建和删除100个lambda进程吗?还是它会并行地做呢?
我的第二个问题是主要的问题: lambda的工作是请求一个每小时到期的访问令牌(对于外部服务),并使用它,对该外部服务执行一些操作。
现在,我希望能够缓存该令牌,并且只每1小时请求一次,而不是每次使用lambda请求时。
考虑到Lambda的工作方式,是否有一种通过代码来实现它的方法?如何确保所有Lambdas进程使用相同的访问令牌?(我知道我可以创建一个新的Redis实例并让它们都指向它,但是我正在寻找一个“更简单”的解决方案)
发布于 2018-12-03 18:05:40
您可以将令牌填充到SSM参数存储中。你可以加密这个值。Lambda可以检查值上的最后修改日期,以监视过期何时挂起和续订。没有要维护的Redis实例,该值将被加密。
https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html
您还可以使用DynamoDB进行此操作。比Redis低,因为它没有服务器。如果您有很多并发Lambda,这可能比SSM更好,因为您可能会遇到API上的速率限制。因为您必须设置一个DynamoDB表,所以需要做更多的工作。
另一个选项是有一个“父”Lambda函数,它获取API令牌并调用“worker”Lambda,并将令牌作为参数传递。
https://stackoverflow.com/questions/53598379
复制相似问题