#lambda #boto3 #mqtt #iot
#лямбда #boto3 #mqtt #iot
Вопрос:
У меня есть лямбда-функция, которая работает без проблем в течение нескольких месяцев. Начиная с пары дней назад, теперь время ожидания публикации для клиента 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-секундный тайм-аут должен быть достаточно длинным, поэтому я не пытался сделать его длинным.
Комментарии:
1. Вчера днем все снова начало работать — я ничего не изменил. Довольно неприятно, что потребовалось несколько часов, чтобы изолировать проблему до публикации boto3. Поскольку я ничего не сделал, чтобы это исправить, я не знаю, как предотвратить повторение этого. Итак, я пока оставлю вопрос без ответа.
2. Кажется, что-то пошло не так на стороне сервера, но я не могу понять, почему другие не сообщали о подобных проблемах. Может быть, есть более распространенный способ связи между лямбда-сервером и IoT, чем использовать boto3 iod-публикация данных клиента?
3. Работает без проблем с 19 декабря, но сегодня он снова остановился. Я предполагаю, что он просто снова начнет работать. Если у кого-нибудь есть представление о том, как отлаживать, я был бы признателен!
4. Сегодня утром он снова начал работать.
5. Сегодня он снова остановился. Публикация — это просто тайм-аут в коде, работающем на Lambda. Как решить?
Ответ №1:
У меня тоже была эта проблема, и я смог ее решить, изменив среду выполнения Lambda, чтобы использовать последнюю версию Python (3.8).
Комментарии:
1. Хорошо, я попробую это. Прошло довольно много времени, прежде чем я настроил функцию Lambda, поэтому мне придется вернуться и просмотреть это.
2. Я попытался экспортировать функцию в zip-файл и перезагрузить в новую лямбда-функцию, используя ту же «роль». Я использовал то же определение триггера и отредактировал «конечную точку» на портале Alexa. Но пока не запускается. Далее, я думаю, начните с самого начала.
3. Привет! Это работает! После того, как я, наконец, правильно настроил новую функцию lambda, чтобы посмотреть, продолжит ли она работать через несколько недель. Спасибо за ответ!
4. Я не уверен, почему, но это может иметь какое-то отношение к конечной точке Интернета вещей, которую использует пакет boto3.
5. К сожалению, у меня это не сработало. У меня все еще была та же проблема, даже после изменения среды выполнения python на последнюю версию