Определение параметров 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