【问题标题】:AWS Lambda: Getting error again and again in LogsAWS Lambda:在日志中一次又一次地出错
【发布时间】:2022-01-15 15:52:09
【问题描述】:

我正在使用 AWS 进行应用程序开发。我在 AWS 中使用了一个 python lambda 函数。

当 dynamodb 表 mytable 中的任何项目被修改时,将触发此 lambda 函数。

我在 2 小时前修改了该项目。我将其值从 4 更改为 5。即使在 2 小时后我仍然在 cloudwatch 日志中收到错误(现在也是):

[ERROR] KeyError: 'OldImage'
Traceback (most recent call last):
  File "/var/task/lambda_function.py", line 16, in lambda_handler
    if (event['Records'][itert]['dynamodb']['NewImage']['amount']['S'] != event['Records'][itert]['dynamodb']['OldImage']['amount']['S']):

令人惊讶的是,即使在我停止修改 dynamodb 表中的项目后 2 小时后,错误日志也会一次又一次地出现在 cloudwatch 中。这是为什么呢?

【问题讨论】:

  • 根据 lambda 指标,您的函数在过去 2 小时内调用了多少次?
  • @OmarRosadio 从 lambda 指标中我看到过去 3 小时 - 该图显示了一条计数为 1 的水平线。
  • 每 5 分钟调用 1 次?
  • @OmarRosadio 我认为它正在被不断调用

标签: amazon-web-services aws-lambda


【解决方案1】:

检查事件源映射配置中的 MaximumRetryAttempts 参数。

来自docs

最大重试次数 (仅限流)在指定重试次数后丢弃记录。默认值为 -1,它将最大重试次数设置为无限。当 MaximumRetryAttempts 为无限时,Lambda 会重试失败的记录,直到记录在事件源中过期。

使用默认值,该函数将无限期地重试处理事件(直到记录过期或超过您在事件源映射上配置的最大期限)。您需要根据您的用例设置适当的值。

【讨论】:

  • 嗯。我看到在我的 AWS lambda 中,在 dynamodb 触发器下,重试尝试设置为 -1。我该如何改变?我也找不到在dynamodb 流中更改重试尝试的选项
  • 更改重试次数的选项在哪里?
  • 删除触发器然后重新创建它
猜你喜欢
  • 1970-01-01
  • 2013-04-27
  • 2010-11-01
  • 2020-04-17
  • 1970-01-01
  • 2021-11-14
  • 2018-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多