Я хочу облегчить взаимодействие на основе URI с программами Python на узле входа в систему cfncluster. Программы будут выполнять различные трудоемкие (от минуты до часа) операции, в основном связанные с производимыми и потребляемыми объектами S3.
У меня есть прототипы сценариев меньшего масштаба, использующих функции Lambda и API GW для предоставления асинхронных конечных точек, где клиент отправляет JSON в конечную точку URI, которая отправляет его в функцию Lambda, функция Lambda предлагает уникальное имя объекта S3 и сразу возвращает это (в JSON) клиенту, а затем приступает к работе по созданию материала в этом объекте S3 (в рамках временных и пространственных ограничений функций Lambda). Клиент опрашивает, пока объект не становится доступным, часто вызывая другую функцию Lambda для использования этого объекта S3.
Теперь я хочу сделать то же самое, когда выполняемая работа огромна (крупномасштабные атмосферные модели), что потребует запуска cfncluster (для параллельных вычислений) с большим количеством больших пакетов программного обеспечения. Наилучший подход, который я могу предложить, - запускать функции Lambda через API-GW, а затем запускать асинхронные процессы (запуск, проверка состояния, уничтожение) в cfncluster. Хотя я мог бы заставить лямбда-функции взаимодействовать с процессами cfncluster через ssh, я бы предпочел этого избежать. Эти процессы обычно происходят из-за запуска кода Python.
Я читал AWS " EC2 Run Command " для выполнения задач администратора, и мое смутное понимание таково, что
- Я могу запустить эту «Команду запуска EC2» из функции Lambda, то есть я мог бы передать JSON через API GW в функцию Lambda и получить команду «run» для экземпляра EC2.
- «Команда запуска EC2» записывает stdout в объект S3, поэтому «возможно» я могу настроить процессы EC2 для записи JSON, который я хотел бы получить в ответе, и иметь другую лямбду функции получают их в запросах статуса.
Это, конечно, не кажется слишком простым, но, кажется, выполнимым, и, насколько мне известно, это может представлять собой «современное состояние» для осуществления контроля крупномасштабных научных исследований через Интернет. модели в облаке. Правильно ли я считаю, что это, вероятно, «состояние дел» для того, что я хочу сделать? AWS постоянно добавляет новые сервисы. Я что-то пропустил?
Я также рассмотрел (и в малом масштабе прототипировал) использование сервера CherryPy в экземпляре EC2, но у него есть свои сложности и недостатки.