Выберите VPC, созданный из облачной информации - PullRequest
0 голосов
/ 22 февраля 2019

Я создаю два шаблона EKS и один шаблон VPC.В шаблоне VPC я создал 3 частные и 3 общедоступные подсети, которые работают нормально.Итак, я хочу, чтобы один EKS был публичным, а один EKS - частным.Так как это можно сделать с помощью облачной информации.

Type: List<AWS::EC2::Subnet::Id>

Это дает мне список подсетей, который равен 6.

Ec2SubnetId: 
     !Select [0, !Ref SubnetIds]

Это выбирает 1-ю подсеть из всех подсетей.Но я не уверен, как выбрать 3 конкретных общедоступных или частных подсети только в облачной информации.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

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

Outputs:
  PublicSubnets:
    Description: Public Subnets
    Value: !Join [",", [!Ref PublicSubnet1, !Ref PublicSubnet2, !Ref PublicSubnet3]]
    Export:
      Name: PublicSubnets  
  PrivateSubnets:
    Description: Private Subnets
    Value: !Join [",", [!Ref PrivateSubnet1, !Ref PrivateSubnet2, !Ref PrivateSubnet3]]
    Export:
      Name: PrivateSubnets

Я думаю, что теперь вы сможете ссылаться на них в своем стеке EKS как

Ec2SubnetId: 
 !Select [0, !ImportValue PrivateSubnets]

или, может быть, Split функция

Ec2SubnetId:
  !Select [0, !Split [",", !ImportValue PrivateSubnets]]

Дайте мне знать, если это работает.

0 голосов
/ 22 февраля 2019

Насколько я понимаю ваш вопрос, у вас есть выражение, которое возвращает первый идентификатор подсети, а именно:

!Select [0, !Ref SubnetIds]

Если вы хотели бы все три подсети, вы могли бы write:

[!Select [0, !Ref SubnetIds], !Select [1, !Ref SubnetIds], !Select [2, !Ref SubnetIds]]

Но это выражение совпадает с простым написанием:

!Ref SubnetIds

Поскольку SubnetIds уже является List<AWS::EC2::Subnet::Id>.

...