Публикация в теме из AWS Lambda перестает работать

#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 на последнюю версию