【问题标题】:Publish to topic from AWS Lambda stop working从 AWS Lambda 发布到主题停止工作
【发布时间】:2022-04-02 10:21:11
【问题描述】:

我有一个 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 秒后超时

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

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

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

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

如何修复或调试此问题? 3 秒的超时时间应该足够长了,所以我没试过让它变长。

【问题讨论】:

  • 昨天下午一切又开始工作了——我什么也没做。令人沮丧的是,将问题隔离到 boto3 发布需要几个小时。由于我没有做任何事情来修复它,我不知道如何防止它再次发生。所以,我暂时不回答这个问题。
  • 似乎服务器端出了问题,但我不明白为什么其他人没有报告类似的问题。也许有比使用 boto3 iod-data 客户端发布更常见的方式在 lambda 服务器和 IoT 之间进行通信?
  • 自 12 月 19 日以来一直运行没有问题,但今天又停止了。我猜它会重新开始工作。如果有人知道如何调试,我将不胜感激!
  • 今天早上又开始工作了。
  • 今天又停了。发布只是在 Lambda 上运行的代码超时。如何解决?

标签: lambda boto3 mqtt iot


【解决方案1】:

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

【讨论】:

  • 好的,我试试。我设置了 Lambda 函数已经有一段时间了,所以我得回去回顾一下。
  • 我尝试将函数导出为 zip 文件,然后使用相同的“角色”重新加载到新的 lambda 函数中。我使用了相同的触发器定义并在 Alexa 门户中编辑了“端点”。但是,还没有触发。接下来,我想从头开始。
  • 嘿!它正在工作!在我终于正确设置了新的 lambda 函数之后,现在看看它是否在几周后继续工作。感谢您的回答!
  • 我不知道为什么,但它可能与 boto3 包正在使用的 IoT 端点有关。
  • 不幸的是,它对我不起作用。即使将 python 运行时更改为最新版本,我仍然遇到同样的问题
猜你喜欢
  • 2017-02-22
  • 2019-11-04
  • 2018-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-01
相关资源
最近更新 更多