如何解决AWS lambda python 方法/代码需要在每次调用时使变量全局化
我现在在做什么:
在 lambda 处理程序函数中,我从 athena 获取数据并执行一些逻辑,还从执行某些逻辑的 kinesis 获取数据。每 20 秒调用一次 lambda 处理程序
这是伪代码:
def lambda_handler(event,context):
query = query to get data from athena
df = pd.DataFrame(query)
###Some processing logic from by taking data from kinesis###
我的问题是
我从 athena 获取的数据每天只会更改一次。因此,每次调用 lambda 处理程序时,它都会不必要地向 athena 查询,这是低效的
我需要什么
我需要一些解决方案/代码来“查询雅典娜并将数据帧作为全局范围放入”,因此每次触发 lambda 处理程序时,它都会使用全局变量。
解决方法
在 lambda 本身中没有持久性全局变量。您可以计算的唯一有限的数据持久性是通过 AWS Lambda execution environment:
在函数处理程序方法之外声明的对象保持初始化状态,从而在再次调用函数时提供额外的优化。例如,如果您的 Lambda 函数建立了数据库连接,而不是重新建立连接,而是在后续调用中使用原始连接。我们建议在您的代码中添加逻辑以在创建新连接之前检查连接是否存在。
然而,这并不可靠且短暂。因此,您不经常查询 Athena 的唯一方法是将查询结果存储在 lambda 函数之外。
根据要存储的数据的性质和数量,确保 lambda 函数调用之间数据持久性的常见选择是 S3、EFS、DynamoDB、SSM Parameter Store 和 ElasticCache。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。