NodeJS 自动禁用AWS SQS lambda触发器

yks3o0rb  于 2023-04-29  发布在  Node.js
关注(0)|答案(3)|浏览(111)

我已经创建了带有lambda触发器的aws SQS。我面临的问题是,当消息从sqs发送时,lambda触发器会自动断开连接,cloudwatch中也不会生成日志(生成日志流)。有人知道吗?

dddzy1tm

dddzy1tm1#

对于SQS Lambda触发器,
您的Amazon SQS角色必须包括以下权限:

  1. lambda:CreateEventSourceMapping
  2. lambda:ListEventSourceMappings
  3. lambda:ListFunction
    您的Lambda角色必须包括以下权限:
  4. sqs:ChangeMessageVisibility
  5. sqs:DeleteMessage
  6. sqs:GetQueueAttributes
  7. sqs:接收消息
    注意,
  • 您的队列和Lambda函数必须位于同一AWS区域。
  • FIFO队列不支持Lambda函数触发器。
  • 只能将一个队列与一个或多个Lambda函数关联。

对于日志,请检查您的lambda是否具有以下cloudwatch权限来生成日志

  • 日志:CreateLogGroup
  • 日志:CreateLogStream
  • 日志:PutLogEvents
xam8gpfp

xam8gpfp2#

我也遇到了这个。最终,“禁用的”SQS/Lambda触发器看起来像是一个可能由多个根本原因导致的症状。
在我的情况下,这不是一个权限问题。根本原因是将SQS队列的“EventSourceArn”Map到Lambda函数的“FunctionArn”的“事件源Map”的问题。我已经删除并重新创建了相同名称的SQS队列。这样做的结果是,当第一个SQS队列被删除时,触发器被AWS自动禁用,但当创建新队列时,Map保持在“禁用”状态。
这里的解决方法只是手动删除事件源Map。一旦完成此操作,“禁用”触发器就不再持续。这里有一个关于相关问题的很好的答案/解释-https://stackoverflow.com/a/62392964/8577382

eyh26e7m

eyh26e7m3#

如果您的权限已按照此处其他解决方案的解释而仍然不起作用,则这是我们发现的结果
我们的SQS消息是通过KMS密钥加密的,Lambda无法访问,AWS将其标记为开箱即用禁用。

相关问题