Я работаю над проектом Node.js, в котором есть лямбда-функция AWS.Мы назовем это funcA
.Он может getObject()
и putObject()
на конкретном контейнере s3.
У нас есть среда разработки с Node.js, работающим на экземпляре Elastic Beanstalk.Экземпляр работает с ролью IAM, специально предназначенной для dev.Эта роль IAM позволяет ему вызывать функцию Lambda и получать доступ к корзине dev S3.Вот где это сложно ...
Нам также необходимо иметь отдельные промежуточные и производственные среды, которые также будут на Elastic Beanstalk.Эти среды также должны использовать эту лямбда-функции.Однако это разные экземпляры EB, работающие под разными ролями IAM.Эти роли должны иметь доступ только к промежуточной и рабочей корзинам соответственно.
Наша команда по инфраструктуре говорит мне, что это означает, что у меня должно быть три отдельных лямбда-функции, зависящих от среды: так funcA_dev, funcA_staging, funcA_prod.Это буквально тот же самый точный код, выполняющий ту же самую вещь, но, поскольку он будет играть другую роль, мне нужно иметь три копии.
Я понимаю, что лямбда должна иметь роль.Тем не менее, это выглядит как очень нестандартный рабочий процесс.Есть ли лучший способ справиться с этим?Ключевыми критериями являются использование ролей IAM (без постоянных или жестко закодированных ключей) и жесткое распределение ролей, чтобы, например, если учетные данные разработчика были каким-либо образом скомпрометированы, это не повлияло бы на производственный сегмент и стек.