选择从cloudformation创建的VPC

问题描述 投票:2回答:2

我正在创建两个EKS模板和一个VPC模板。在VPC模板中,我创建了3个私有子网和3个公共子网,工作正常。因此,我希望一个EKS应该公开,一个EKS应该在私有子网中。那么怎样才能通过cloudformation做到这一点。

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

这给了我6个子网列表。

Ec2SubnetId: 
     !Select [0, !Ref SubnetIds]

这将从所有子网中选择第一个子网。但我不知道如何仅在cloudformation中选择3个特定的公共或私有子网。

amazon-web-services amazon-cloudformation amazon-vpc subnet amazon-eks
2个回答
1
投票

如果我知道您需要创建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
投票

据我了解你的问题,你有一个表达式返回第一个子网ID,即:

!Select [0, !Ref SubnetIds]

如果你想要所有三个子网,你可以写:

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

但那个表达与写作一样:

!Ref SubnetIds

因为SubnetIds已经是List<AWS::EC2::Subnet::Id>

© www.soinside.com 2019 - 2024. All rights reserved.