2016-10-21 6 views
3

Я пытаюсь сделать следующее:AWS CloudFormation параметр зависимость

"Parameters": { 
    "InterfaceMode" : { 
     "Description": "Configure instance to run in onearm or inline mode", 
     "Type": "String", 
     "Default": "onearm", 
     "AllowedValues": [ "onearm", "inline" ], 
    } 
    "InlineSubnetId" : { 
     "Description": "Name of a subnet assigned to the VPC to use for second interface in inline mode.", 
     "Type": "AWS::EC2::Subnet::Id", 
     "Default": "None" 
    }, 

Теперь, если пользователь выбирает onearm, только один интерфейс необходим и InlineSubnetId не требуется. Обычно пользователь оставляет «InlineSubnetId» пустым, но это не работает с валидацией облачности, поскольку для него требуется значение для типов AWS. Я не могу просто использовать строковый тип, так как я хочу, чтобы пользователь выбирал из SUS-поставляемых SubnetIds.

Как обойти это?

  1. Есть ли способ обойти проверку, позволяя выбрать тип AWS, который будет пустым?
  2. Любой способ добавить в список Subnet :: Id другой вариант, например «None»?
  3. Есть ли способ скрыть параметр inlineSubnetId, только если режим встроен?
  4. Как насчет второй страницы параметров, которая зависит от выхода первой страницы параметров?

Спасибо за помощь.

ответ

0

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

0

К сожалению, если вы хотите, чтобы параметр был дополнительным, вы не можете использовать какой-либо из типов параметров AWS (то есть AWS::*). Ни одно из ваших обходных решений для надежного использования не будет работать. Я бы порекомендовал тип String с AllowedPattern, установленным на что-то вроде ^(subnet-[0-9a-fA-F]{8})?$, но это не будет соответствовать вашему требованию сделать выпадающее меню предварительно заполненным существующими значениями подсети.

0

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

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/conditions-section-structure.html http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-conditions.html

Это позволит вам определить условия, которые оценивают истина или ложь в зависимости от входных параметров, которые затем можно использовать вместе с Fn: если оператор вводить различные значения в ресурсы.

Итак, для описанного выше сценария вы можете по умолчанию использовать значение для известного идентификатора подсети, но использовать условия, чтобы игнорировать это значение, если это не требуется. К сожалению, это немного короче, если вы пытаетесь использовать один и тот же шаблон CloudFormation для разных VPC, поскольку подсеть по умолчанию не существует.

 Смежные вопросы

  • Нет связанных вопросов^_^