从AWS Lambda发布到主题停止工作

从AWS Lambda发布到主题停止工作,lambda,boto3,mqtt,iot,Lambda,Boto3,Mqtt,Iot,我有一个Lambda函数,几个月来一直没有问题。从几天前开始,现在到MQTT客户机的发布总是超时。以下是发布代码: client = boto3.client('iot-data', region_name='us-east-1') client.publish(topic= 'sdk/test/Python',qos=1,payload=mypayload) 从日志文件: 2020-12-18T13:57:35.652Z 6660d942-766d-419e-88d2-c09

我有一个Lambda函数,几个月来一直没有问题。从几天前开始,现在到MQTT客户机的发布总是超时。以下是发布代码:

    client = boto3.client('iot-data', region_name='us-east-1')
    client.publish(topic= 'sdk/test/Python',qos=1,payload=mypayload)
从日志文件:

2020-12-18T13:57:35.652Z 6660d942-766d-419e-88d2-c09c11dd33cc任务在3.00秒后超时

客户端正在raspberrypi上运行。我可以从Iot测试控制台发布到该主题,订阅该主题的rpi上运行的客户端接收测试消息

如果我使用Iot测试控制台订阅主题,则不会收到消息

发布的lambda函数有一个内联策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

如何修复或调试此问题?3秒超时应该足够长了,所以我没有尝试延长它。

我也有这个问题,并且能够通过将Lambda运行时更改为使用最新的Python版本(3.8)来解决它。

我今天也遇到了同样的问题,但没有像另一个答案中那样幸运地更改Python运行时。经过一些调试,我提出了以下工作,希望能对其他人有所帮助

使用verify=False禁用SSL证书验证

client = boto3.client(
    'iot-data',
    region_name='us-east-1',
    verify=False
)

我在AWS论坛上发现了这一点,似乎可以解释boto3的问题。它还建议将boto3配置为使用客户特定的iot:data ats endpoint作为更好的解决方案(但我还没有尝试过,因为Workaround救了我)。

昨天下午一切又开始工作了——我没有做任何更改。相当令人沮丧的是,花了几个小时才把这个问题孤立起来。因为我没有做任何事情来修复它,我不知道如何防止它再次发生。所以,我暂时不回答这个问题。似乎服务器端出现了一些问题,但我不明白为什么其他人没有报告类似的问题。也许在lambda服务器和物联网之间有一种比使用boto3 iod数据客户端发布更常见的通信方式?自12月19日以来一直在运行,但今天又停止了。我猜它会重新开始工作。如果有人知道如何调试,我将不胜感激!今天早上它又开始工作了,今天又停止了。Publish只是在Lambda上运行的代码中超时。如何解决?好的,我试试看。我设置Lambda函数已经有一段时间了,所以我必须回顾一下。我尝试将函数导出到zip文件,然后使用相同的“角色”重新加载到新的Lambda函数中。我使用了相同的触发器定义,并在Alexa门户中编辑了“端点”。但是,还没有触发。接下来,我想从头开始。嘿!它起作用了!在我终于正确地设置了新的lambda函数之后,看看它在几周后是否还能工作。谢谢你的回答!我不知道为什么,但这可能与boto3包使用的物联网端点有关。不幸的是,它对我不起作用。即使在将python运行时更改为最新版本之后,我仍然存在同样的问题