Переменные среды шаблона SAM используют карту, список, ассоциативный массив? - PullRequest
0 голосов
/ 26 сентября 2018

Я видел только примеры с одиночными значениями в шаблонах SAM:

Environment:
  Variables:
    TABLE_NAME: my-table

Я хочу сделать что-то подобное, но, похоже, не работает:

Environment:
  Variables:
      myVar:
      -   prop1: aaa
          prop2: sdfsdfsd
          prop3: ssss
      -   prop1: bbb
          prop2: wwwwww
          prop3: aaaaa

Я хочу иметьпеременная окружения, которая похожа на список объектов.Я мог бы сохранить строку с разделителями и разобрать ее сам, но я бы предпочел, чтобы она была похожа на объект / карту / список, как если бы я был готов в файл yaml.

1 Ответ

0 голосов
/ 26 сентября 2018

Самое близкое, что вы можете сделать, это json кодировать значение для вашей переменной среды и декодировать его, используя язык времени выполнения:

 Environment:
  Variables:
    USER: '{"name": "john", "surname": "galt"}'

Если вы хотите предотвратить декодирование json для каждого запроса, переместите логику декодированиявне обработчика, в этом случае код не будет повторно выполняться, пока лямбда не перегрета.

Все объявления в вашем коде функции Lambda (вне кода обработчика, см. Модель программирования) остаются инициализированными, обеспечивая дополнительную оптимизацию при повторном вызове функции.Например, если ваша функция Lambda устанавливает соединение с базой данных, а не восстанавливает соединение, исходное соединение используется в последующих вызовах.Мы предлагаем добавить логику в ваш код, чтобы проверить, существует ли соединение перед его созданием.

Подробнее о лямбда-модель исполнения

Лично я бы создал json file, сохраните его в контейнере s3 и используйте переменную окружения, чтобы указать s3 url для этого файла.Кроме того, используйте ту же технику, которую я упомянул выше, или еще более сложный механизм кэширования в зависимости от ситуации при извлечении файла config

...