这可能是由于Lambda函数没有正确处理失败的消息所导致的。为了解决这个问题,你可以在Lambda函数中添加一个错误处理程序,将异常的消息发送到另一个SQS队列或提供错误日志等信息。
以下是一个使用错误处理程序来解决Lambda与SQS触发器循环处理作业的示例代码:
import boto3
sqs = boto3.client('sqs')
queue_url = 'your-queue-url'
def lambda_handler(event, context):
for record in event['Records']:
try:
# process message
print(record)
except Exception as e:
# handle exception
print(e)
sqs.send_message(QueueUrl='your-error-queue-url', MessageBody=record['body'])
在这个示例中,任何处理消息时发生的异常都将被捕获并记录,并通过send_message方法将消息发送到另一个SQS队列。这样,错误的消息可以轻松地被追踪和处理。