Как автоматически поместить переменную окружения во все лямбды, созданные в моем проекте CDK - PullRequest
0 голосов
/ 17 февраля 2020

Мы реализуем почти все наши лямбды в чаше, а затем используем их в проекте CDK, как описано здесь .

Мне нужно добавить одну и ту же переменную окружения для всех лямбда-выражений в стеке (разные для разработчика). Я хотел бы сделать это автоматически, и не рассчитывать на то, что каждый разработчик добавит переменную в конфигурацию этапа Chalice. Я не могу использовать AWS Хранилище параметров системного менеджера, потому что он одинаков для всех стеков разработчиков - у нас общая учетная запись AWS. Я могу разобрать окончательный шаблон облачной информации перед развертыванием и добавить переменные ко всем лямбдам, но может быть есть более элегантный способ?

Спасибо.

1 Ответ

1 голос
/ 19 февраля 2020

Вы должны взглянуть на Аспекты .

Аспекты - это способ применения операции ко всем конструкциям в данной области видимости. Функциональность может изменять конструкции, например, путем добавления тегов, или может проверять что-либо о состоянии конструкций, например, обеспечивать шифрование всех сегментов.

@jsii.implements(core.IAspect)
class EnvVarSetter:

  def visit(self, node):
    # See that we're dealing with a Function
    if isinstance(node, lambda.Function):
      # set env var here
      node.add_environment('KEY', 'VALUE')

# Apply to the stack
stack.node.apply_aspect(EnvVarSetter())
...