Теоретически, да, но вы можете столкнуться с некоторыми проблемами, если вы пойдете по этому пути.
Чтобы восстановить резервную копию с S3 на postgresql: Вам нужно будет связать двоичные файлы pg_restore
или psql
в ваш пакет развертывания Lambda. Затем ваш код лямбды должен будет либо загрузить резервную копию файла S3 в папку /tmp
вашей лямбды (следите за тем, чтобы limit Lambda для 512 МБ для папки /tmp
), либо передать содержимое файла S3 в pg_restore
/ psql
через стандартный . Чтобы вызвать psql
или pg_restore
, вы должны использовать модуль Python subprocess . Будьте осторожны с большими резервными копиями, чтобы не загружать весь файл резервной копии в память: вы можете превысить лимит памяти Lambda.
Чтобы запросить базу данных, вам нужно включить psycopg2 в пакет развертывания вашей Lambda. Подробнее о том, как это сделать, см. https://github.com/jkehler/awslambda-psycopg2.
Чтобы отправить данные по электронной почте, вы должны использовать AWS SES .
Лично я бы, вероятно, использовал для этого контейнер Docker (используя AWS ECS или Batch ). Таким образом, вероятно, будет проще установить необходимые двоичные файлы (pg_restore
/ psql
, psycopg2). Кроме того, вы избежите ограничений, присущих Lambda (ограничение времени выполнения 15 минут, максимальный размер /tmp
, ограничение ОЗУ).