Cloudformation SubnetList获取CidrBlock

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

我正在开发一个使用CloudFormation配置的新基础架构。我需要为安全组获取子网cidrblock。

我已经尝试了一些方法来获取子网Cidr块但是我收到以下错误:

YAML not well-formed

我的模板是:

 SubnetList:
    Description: 'Gateway Subnet Id'
    Type: List<AWS::EC2::Subnet::Id>

.....
..
....

ElastiCacheSecurityGroupIngressGateway: ##SubnetLists
  Type: AWS::EC2::SecurityGroupIngress
  Properties:
    GroupId: !GetAtt SecGroup.GroupId
    IpProtocol: tcp
    FromPort: '6379'
    ToPort: '6379'
    CidrIp: Fn::GetAtt: [ Fn::Select: [ 0, !Ref SubnetList ], CidrBlock ]

我需要来自SubnetList的fetch cidr块。

我怎么能处理这个?

amazon-web-services amazon-cloudformation devops vpc infrastructure-as-a-code
1个回答
2
投票

除非您在同一模板中创建了子网,否则我认为您无法做到这一点。使用GetAtt时,您需要在CloudFormation模板中提供资源的名称。您只是提供子网ID的参数列表 - 这些是字符串,而不是CloudFormation管理的资源。

您可以简单地将子网CIDR作为参数传入,或者更好的是,使用Fn::ImportValue将它们作为创建VPC和子网的堆栈的输出引用。

另请参阅this proposed solution到同样的问题。警告:这不是微不足道的。

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