我已经使用 lambda 触发器创建了 aws SQS。我面临的问题是,当从 sqs 发送消息时,lambda 触发器自动断开连接,并且在 cloudwatch 中也不会生成日志(生成日志流)。有人有什么想法吗?
对于 SQS Lambda 触发器,
您的 Amazon SQS 角色必须包含以下权限:
您的 Lambda 角色必须包含以下权限:
另请注意,
对于日志,检查您的 lambda 是否具有以下用于生成日志的 cloudwatch 权限
我也遇到过这种情况。 最终,“禁用”SQS/Lambda 触发器似乎是由多个根本原因导致的症状。
就我而言,这不是权限问题。根本原因是“事件源映射”存在问题,该映射将 SQS 队列的“EventSourceArn”映射到 Lambda 函数的“FunctionArn”。我已删除并重新创建了同名的 SQS 队列。这样做的结果是,当删除第一个 SQS 队列时,AWS 自动禁用触发器,但在创建新队列时映射仍保持“禁用”状态。
此处的解决方法只是手动删除事件源映射。完成此操作后,“禁用”触发器将不再存在。这里有一个相关问题的很好的答案/解释 - https://stackoverflow.com/a/62392964/8577382
如果您的权限按照此处其他解决方案的说明已到位,但仍然不起作用,这就是我们发现的情况
我们的 SQS 消息通过 Lambda 无法访问的 KMS 密钥进行加密,AWS 将其标记为开箱即用禁用。
根据 @Oisín 的回答,对我来说,这是在我删除并重新创建了一个附加了 lambda 函数的队列之后发生的。重新创建时,队列已经附加了处于禁用状态的 lambda。
如果您进入 lambda 的配置页面和触发器部分,您可以删除触发器。然后返回 SQS 队列,lambda 引用应该已经消失。然后您可以重新附加它