【问题标题】:Send line from file each time Lambda function is triggered [python]每次触发 Lambda 函数时从文件发送行 [python]
【发布时间】:2021-11-22 16:18:25
【问题描述】:

我已经搜索过这个问题,但找不到任何可以帮助我的东西。

已编辑

主要思想是,每次 cloudwatch 触发 lambda 函数时(每天),从我从 s3 存储桶获取的文本文件中选择后续行,该行将附加到电子邮件中。 下次触发 lambda 时,同样会发生,但文本文件中的下一行,依此类推。

我或多或少有一个想法,使用for循环,我的问题是如何在每次触发函数时,选择文本文件中的下一行。

【问题讨论】:

  • 随机一行还是按顺序排列?
  • @Marcin 最好按顺序排列。
  • 抱歉,您的用例不清楚。 “选择一条线”是什么意思?它应该每天选择一个后续行吗?文件的内容会改变吗?文件中有多少行?您是否考虑过采取不同的做法,例如将消息存储在 FIFO 队列中并每天只抓取“第一条”消息,或者在 S3 中每个文件存储一行并每天删除一个文件?
  • @JohnRotenstein 我已经编辑了我的问题,我认为现在更清楚了

标签: python-3.x amazon-web-services amazon-s3 aws-lambda


【解决方案1】:

如果您需要按顺序从文件中读取行,每天执行一次 lambda 就是一行,那么您必须跟踪这些行。如果每天只有一次,您可以使用 SSM Parameter Store。每次执行 lambda 时,它都会查询 SSM Parameter Store 之前读取的行号。

同样,在成功调度一行后,Lambda 函数会更新 SSM Parameter Store 中的参数。

确切的细节取决于文件的大小,因为这个过程会随着时间的推移而逐渐变慢。

【讨论】:

  • @ack31 那很好。如果它是千兆字节或几兆字节,那将是一个问题。
  • @ack31 我建议你自己写代码,如果你遇到问题,提出新的和具体的问题。
  • @ack31 检查aws docs 什么是 SSM 参数存储以及如何使用它是个好主意。在 SO 的 cmets 中解释太多了。
  • @ack31 参数存储仅保留之前读取的行号。您的 lambda 读取值,从文件中获取 number+1 行,并更新 PS 中的值以供下次执行。
  • @ack31 顺便说一句,如果您觉得我的回答有帮助,我们将不胜感激。
猜你喜欢
  • 2016-04-19
  • 2018-03-08
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多