aws-lambda - 如何在 AWS lambdas 中保持状态?
问题描述
我们有一个库可以让我们访问一些外部 API,但它的初始化时间很长。也没有办法用一些会话密钥或任何可以存储的东西来初始化它,它总是必须经历整个初始化过程。
有没有办法让库只初始化一次,然后在所有 lambda 函数中使用?
如果我们能够以某种方式通过对代码进行逆向工程来注入会话,那么会话数据最好存储在哪里?在 DynamoDB 中,阶段变量,还有什么?
解决方案
- aws lambda 中有全局变量,在
lambda_handler
处理程序之外声明的任何变量都可以在连续调用中使用,前提是 aws 使用相同的容器。不确定您的情况是否可以。由于一旦容器被 aws 销毁,那么之后进行的下一次调用将不得不再次进行重新初始化。这一切都取决于该服务的使用频率或它的繁忙程度。 - 如果您正在考虑对代码进行逆向工程,那么在这种情况下,您有多个选项来存储会话,例如 DynamoDB、Amazon ElastiCache。那么这一切都取决于您的服务需求和预算。
- 正如 elRull 所建议的那样,如果您能够围绕它构建服务并使其在可能有效的 t2.micro 中运行。就像在第一次调用时初始化它,然后让它保持活动状态并让其他调用使用它。
推荐阅读
- java - Jpql 没有通过两级提取获得空值
- here-api - HereMaps 定价中的“每月资产”是什么意思?
- python - 如何在 HTML 中获取文件的完整路径位置
- gradle - 从自定义插件动态加载 Gradle 插件
- javascript - PSPDFKIT instance.addEventListener('annotations.create') 缺少注释类型
- typescript - 强类型工作者
- excel - 如何复制vba单元格
- windows - 无法在本地 Windows gitlab runner 中执行 bash 脚本
- mapstruct - 我可以强制 mapstruct 将映射方法委托给另一个映射方法或默认(内置)转换吗?
- javascript - 将选中复选框的值获取到Javascript?