首页 > 解决方案 > 如何在 AWS lambdas 中保持状态?

问题描述

我们有一个库可以让我们访问一些外部 API,但它的初始化时间很长。也没有办法用一些会话密钥或任何可以存储的东西来初始化它,它总是必须经历整个初始化过程。

有没有办法让库只初始化一次,然后在所有 lambda 函数中使用?

如果我们能够以某种方式通过对代码进行逆向工程来注入会话,那么会话数据最好存储在哪里?在 DynamoDB 中,阶段变量,还有什么?

标签: aws-lambda

解决方案


  • aws lambda 中有全局变量,在lambda_handler处理程序之外声明的任何变量都可以在连续调用中使用,前提是 aws 使用相同的容器。不确定您的情况是否可以。由于一旦容器被 aws 销毁,那么之后进行的下一次调用将不得不再次进行重新初始化。这一切都取决于该服务的使用频率或它的繁忙程度。
  • 如果您正在考虑对代码进行逆向工程,那么在这种情况下,您有多个选项来存储会话,例如 DynamoDB、Amazon ElastiCache。那么这一切都取决于您的服务需求和预算。
  • 正如 elRull 所建议的那样,如果您能够围绕它构建服务并使其在可能有效的 t2.micro 中运行。就像在第一次调用时初始化它,然后让它保持活动状态并让其他调用使用它。

推荐阅读