FCM push-уведомления с помощью функции AWS Lambda
У меня есть проект Django (Django 3.1.2), использующий fcm-django (версия 0.3.7) для отправки push-уведомлений. Приложение развернуто в AWS Elastic Beanstalk, и уведомления отправляются без проблем. Тот же код развернут в AWS Lambda Function для запуска 3 заданий cron, которые проверяют некоторые условия (каждые 15 минут) и при необходимости отправляют push-уведомления. Но на Lambda Function уведомления не отправляются. После некоторого копания я понял, что функция не может общаться с внешней средой, потому что она находится в VPC. Это имело абсолютный смысл, так как я мог видеть в логах новые HTTPS соединения, начинающиеся по направлению к fcm.googleapis.com:443, а затем "Task timed out after 30 seconds"
Чтобы предоставить доступ в интернет для подключенной к Amazon VPC функции Lambda, нам нужно направить ее исходящий трафик на NAT-шлюз в публичной подсети.
Итак, я выполнил шаги, описанные в How do I give internet access to a Lambda function that's connected to an Amazon VPC? чтобы предоставить доступ к интернету Lambda Function.
Я добавил вызов http://dog-api.kinduff.com/api/ в свой код. Этот вызов теперь проходит, так что конфигурация NAT сработала! Однако у меня по-прежнему есть таймаут на fcm.googleapis.com...
Что это может быть? Лямбда-функция имеет те же переменные env, что и приложение в Elastic Beanstalk.