Как использовать параметры в AWS CDK?


Определение параметров CDK

Используйте дополнительный раздел Parameters для настройки ваших шаблонов. Параметры позволяют вам вводить пользовательские значения в ваш шаблон каждый раз, когда вы создаете или обновляете стек.

Чтобы определить параметр, вы используете конструкцию CfnParameter.

// parameter of type String
const applicationPrefix = new CfnParameter(this, 'prefix', {
  description: 'parameter of type String',
  type: 'String',
  allowedPattern: '^[a-z0-9]*$', // allowed pattern for the parameter
  minLength: 3, // minimum length of the parameter
  maxLength: 20, // maximum length of the parameter
}).valueAsString // get the value of the parameter as string

console.log('application Prefix 👉', applicationPrefix)

// parameter of type Number
const applicationPort = new CfnParameter(this, 'port', {
  description: 'parameter of type Number',
  type: 'Number',
  minValue: 1, // minimum value of the parameter
  maxValue: 65535, // maximum value of the parameter
  allowedValues: ['8080', '8081'], // allowed values of the parameter
}).valueAsNumber // get the value of the parameter as number

console.log('application Port 👉', applicationPort)

// parameter of type CommaDelimitedList
const applicationDomains = new CfnParameter(this, 'domains', {
  description: 'parameter of type CommaDelimitedList',
  type: 'CommaDelimitedList',
}).valueAsList // get the value of the parameter as list of strings

console.log('application Domains 👉', applicationDomains)
Вход в полноэкранный режим Выход из полноэкранного режима

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

Давайте повторим то, что мы сделали в приведенном выше фрагменте кода.

Мы определили 3 параметра:

В настоящее время CloudFormation поддерживает следующие типы параметров:

  • Строка — литеральная строка
  • Число — целое число или плавающая запятая
  • Список — массив целых или плавающих чисел
  • CommaDelimitedList — Массив литеральных строк, разделенных * запятыми.
  • Типы параметров, специфичные для AWS
  • Типы параметров SSM

Если вы попытаетесь развернуть стек, не определив параметры, стек не будет создан.

CdkStarterStackStack failed: Error: The following CloudFormation Parameters are missing a value: port, domains

Параметр prefix не требуется, поскольку имеет значение по умолчанию.

Развертывание стека с параметрами

npx aws-cdk deploy 
    --parameters prefix=demo 
    --parameters port=8081 
    --parameters domains=www.codewithyou.com,www.freedevtool.com 
    --outputs-file ./cdk-outputs.json
Вход в полноэкранный режим Выйти из полноэкранного режима

Обратите внимание, что мы должны использовать флаг —parameters для каждого параметра, который мы передаем в шаблон.

Теперь, когда мы успешно развернули наше приложение CDK, мы можем просмотреть раздел параметров в консоли CloudFormation:

Или мы можем использовать файл cdk-outputs.json для получения значений параметров:

CdkStarterStackStack.applicationDomains = www.codewithyou.com,www.freedevtool.com
CdkStarterStackStack.applicationPort = 8081
CdkStarterStackStack.applicationPrefix = demo
Вход в полноэкранный режим Выйти из полноэкранного режима

Если вы посмотрите в файл cdk.out/CdkStarterStackStack.template.json, вы увидите, что параметры определены в разделе Parameters.

{
  "Parameters": {
    "prefix": {
      "Type": "String",
      "Default": "sample",
      "AllowedPattern": "^[a-z0-9]*$",
      "Description": "parameter of type String",
      "MaxLength": 20,
      "MinLength": 3
    },
    "port": {
      "Type": "Number",
      "AllowedValues": ["8080", "8081"],
      "Description": "parameter of type Number",
      "MaxValue": 65535,
      "MinValue": 1
    },
    "domains": {
      "Type": "CommaDelimitedList",
      "Description": "parameter of type CommaDelimitedList"
    },
    "BootstrapVersion": {
      "Type": "AWS::SSM::Parameter::Value<String>",
      "Default": "/cdk-bootstrap/hnb659fds/version",
      "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]"
    }
  }
}
Вход в полноэкранный режим Выход из полноэкранного режима

Очистка

Не забудьте удалить стек перед тем, как покинуть эту статью. Спасибо за прочтение!

npx aws-cdk destroy
Вход в полноэкранный режим Выход из полноэкранного режима

Код для этой статьи доступен на GitHub

Оцените статью
devanswers.ru
Добавить комментарий