#amazon-web-services #aws-lambda
Вопрос:
Я знаю, что вы можете загрузить контейнер docker в функцию AWS lambda. Есть ли способ сопоставить два контейнера docker с одной и той же лямбда-функцией? Так что одно выполняется за другим. Это позволило бы обеспечить некоторую локальную связь через временный диск.
Комментарии:
1. Нет, ты не можешь этого сделать. Используйте ECS для такого варианта использования.
2. Ну, технически вы можете просто настроить среду docker для функции lambda, вытащить контейнеры docker, а затем выполнить запуск docker. Я пытаюсь понять, есть ли лучший способ. Любопытно узнать об ECS: как вы определяете контейнерные конвейеры в ECS? Функция шага AWS?
Ответ №1:
К сожалению, лямбда-функция может быть привязана только к одному образу докера.
Есть несколько способов, которыми вы могли бы достичь этой желаемой функциональности:
Если вам не нужны две отдельные лямбда-функции, вы можете разбить свой проект на отдельные файлы, сохраняя при этом все в одном контейнере. Это может выглядеть примерно так:
project_name
|
--- Dockerfile
|
--- src
|
--- lambda_function.py
|
--- file1.py
|
--- file2.py
где lambda_function.py
содержится ваш обработчик, который вызывает методы из file1.py
и file2.py
.
Если вам действительно нужны две разные лямбды, у вас есть пара вариантов. Сначала я бы предложил настроить шлюз API между лямбда-1 и лямбда-2. Таким образом, lambda 1 может выполнить запрос curl для API, который вызовет вторую лямбду от вашего имени.
Другим вариантом были бы Пошаговые функции. Он предоставляет удобный пользовательский интерфейс для настройки того, как ваши лямбды будут взаимодействовать друг с другом. Недостатком пошаговых функций является то, что они быстро становятся неуправляемыми, когда вы добавляете в смесь больше лямбд.
Комментарии:
1. Почему вы говорите, что пошаговые функции становятся неуправляемыми, когда вы добавляете в смесь больше лямбд? Я думал, что их заявленная цель состоит в том, чтобы управлять большим количеством лямбд.
2. Теоретически это верно, пошаговые функции предназначены для управления большим количеством Лямбд. Но на практике это становится волосатым очень быстро. Для начала у каждой Лямбды есть свой собственный конвейер развертывания/репозиторий, который вы должны поддерживать. Кроме того, весь процесс пошаговых функций становится трудно отлаживать по мере добавления дополнительных лямбд. Лично я им не пользовался, но мои товарищи по команде совершенно ясно выразили свое недовольство функциями шага. Они рекомендуют изучить управляемый воздушный поток в качестве еще одной альтернативы.