Cloudformation: как сделать ресурсы настраиваемыми в соответствии с пользовательским вводом - PullRequest
0 голосов
/ 06 сентября 2018

Я писал шаблон Cloudformation для beanstalk, когда столкнулся с такой ситуацией.У меня был код ниже в моем шаблоне

 SecurityGroupIngress:
    - IpProtocol: tcp
      FromPort: '80'
      ToPort: '80'
      SourceSecurityGroupId: !Ref ELBSecGroupForBeanStalk
    - IpProtocol: tcp
      FromPort: '22'
      ToPort: '22'
      CidrIp: !If
        - Range
        - !Ref AcessIPRange
        - !Ref 'AWS::NoValue'
    - IpProtocol: tcp
      FromPort: '22'
      ToPort: '22'
      SourceSecurityGroupId: !If
        - SecurityGroupRange
        - !Ref CustomeSecurityGroup
        - !Ref 'AWS::NoValue'

Теперь вы можете видеть, что у меня есть жестко закодированные порты 22 и 80, но как я могу сделать их настраиваемыми.

предположим, что пользователь приходит и хочет добавить 4портов или 6. Я хочу сделать настраиваемым, чтобы можно было использовать один и тот же шаблон.Я могу сделать их параметризованными, но не получаю способ сделать настраиваемым.

1 Ответ

0 голосов
/ 25 октября 2018

К сожалению, нет способа достичь этого только с помощью CloudFormation. Это было бы динамическое количество ресурсов, и это не является частью CF.

Ваши лучшие варианты будут:

  • Используйте инструмент, подобный тропосфере , для динамического создания шаблона CloudFormation, который будет использоваться (следовательно, с динамическим числом портов)
  • Используйте Пользовательский ресурс AWS с лямбда-поддержкой в своем шаблоне вместо указания SecurityGroupIngress. Функция Lambda будет принимать SecurityGroupId в качестве параметра, а также номер порта. Оттуда вы можете вызывать API-интерфейсы AWS (с NodeJS, Python или любым другим, что работает с Lambda) и добавлять нужные порты. Не забудьте также включить код для обновления и удаления правил при обновлении шаблона.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...