Ищете краткое руководство по настройке шаблонных параметров в AWS? Если так, не смотрите дальше.

Я часто забываю об основных процессах, например о том, как использовать шаблоны AWS SAM для создания параметров в хранилище параметров. По этой причине я написал это руководство как краткий документ, который я могу просмотреть, чтобы запомнить шаги. Надеюсь, это поможет вам во многом так же, как и мне.

[Примечание: если вам нужен только код для одного из примеров, прокрутите вниз, я включил туда весь свой файл шаблона для этого руководства]

Настройка проекта SAM

Начните с перехода к местоположению вашего проекта или создайте его с помощью git, если вы еще этого не сделали.

В командной строке введите sam init и ответьте на запросы, чтобы сгенерировать папку развертывания sam, а также файл template.yaml. Я бы рекомендовал начать с шаблона hello world, если он не подходит для вашего варианта использования. Как только ваши ресурсы будут сгенерированы, откройте этот файл template.yaml.

(При желании вы можете сделать sam build, а затем sam deploy --guided, прежде чем делать что-либо еще, просто чтобы убедиться, что вы можете выполнить развертывание на aws с использованием простого шаблона без изменений)

Параметры SSM (с примерами)

В разделе ресурсов этого файла .yaml давайте начнем с представления простейшего из возможных параметров. Параметр, у которого даже нет имени, только тип и значение.

Так что это делает? При развертывании он создаст или обновит параметр в хранилище параметров со строкой типа и значением «Cruller». Фактическое имя сгенерированного параметра будет на самом деле случайным (с использованием имени ресурса), как вы можете видеть ниже, поскольку мы не указали имя. Обычно это нежелательно, но в приведенном выше примере, яблоко, показан абсолютный минимум необходимой информации для допустимого параметра.

Сохраните файл .yaml, а затем введите sam build в cli, а затем введите sam deploy --guided. Следуйте инструкциям и дождитесь завершения развертывания.

После успешного развертывания вы сможете перейти в консоль AWS, перейти в «Системный менеджер»> «Хранилище параметров» и просмотреть свой параметр. Точно так же это будет верно для всех следующих примеров. Если вы выберете параметр, вы сможете просмотреть его подробную информацию, как показано ниже.

Хорошо, если это параметр, использующий только обязательные поля, как выглядит параметр, использующий все необязательные поля? Это выглядит так:

Для получения документации по каждому из этих полей, пожалуйста, обратитесь к документации по облачной информации AWS здесь

После развертывания через sam у нас должно получиться что-то вроде этого в хранилище параметров:

Хорошо, но допустим, мне нужен простой, легко используемый параметр, не беспокоясь о проверке регулярных выражений или отслеживании метаданных. О каких полях мне следует заботиться?

Как минимум, целесообразно указать имя и описание, а также обязательные поля, тип и значение. Имя очень ценно, так как мы, вероятно, намерены ссылаться на него в каком-то приложении, которое мы развертываем с облачным формированием / sam, и описание поможет вам вспомнить, какова была цель параметра в более поздний период.

Что, если я хочу предоставить значение параметра динамически, как часть развертывания, а не во время сборки? Легко ли это сделать?

Да, как и везде в шаблоне sam, вы можете использовать команду! Sub, чтобы указать замену, или! Ref, чтобы указать ссылку.

После того, как вы создали эти параметры (как в параметрах шаблона, а не в параметрах хранилища параметров), вам также необходимо создать раздел параметров в файле шаблона (верхний уровень) и указать значения по умолчанию:

Теперь, когда вы выполните sam build, а затем снова sam deploy --guided, вы должны были создать 5 переменных в хранилище параметров.

Код

Medium не сохраняет интервал между файлами .yaml, поэтому вам нужно будет получить доступ к завершенному файлу template.yaml через GitHub gist, доступный здесь.

Возможные препятствия

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

  1. Я испортил синтаксис в своем шаблоне, и после попытки развертывания мой стек облачной информации застрял в состоянии ROLLBACK_COMPLETE. Что мне делать?
    Это была интересная проблема, которую нужно было решить. Оказывается, если вы испортите свое первое развертывание стека с заданным именем стека, AWS потребует от вас вручную удалить его, перейдя в консоль, а затем перейдя в Cloud Formation. Причина этого, похоже, состоит в том, чтобы обеспечить большую видимость того, почему произошел сбой стека, но разочаровывает то, что имя стека остается вне досягаемости, пока вы не удалите его вручную.
  2. Когда следует использовать! Ref, а когда! Sub?
    Похоже, что общее правило заключается в использовании! Sub для подстановки строк и! ref для отдельного текста. Тем не менее,! Ref намного мощнее простой динамической вставки текста, и его также можно использовать для ссылки на целые поддеревья ресурсов. Это не так полезно для параметров SSM, но полезно при попытке создать общий ресурс для использования другими ресурсами в шаблоне.

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