1

我们正在尝试通过私有子网中的 cloudformation 创建一个网络负载均衡器,我们有 6 个私有子网 - 每个可用区中有 2 个。

目前,我们通过在每个 AZ 中选择一个子网手动传递 SubnetID,如下所示。

LoadBalancer:
        Type: AWS::ElasticLoadBalancingV2::LoadBalancer
        Properties:
          Type: network
          Scheme: internal
          Subnets: !Ref SubnetID
          Tags:
            - Key: Name
              Value: !Ref EnvName

whereSubnetID是一个接受字符串列表的参数。

有没有办法通过基础设施即代码在 cloudformation 中自动获取此子网信息(为每个可用区选择一个私有子网 ID)

PS:将所有 6 个子网作为列表传递会导致负载均衡器创建失败,因为 LB 以某种方式在同一个 AZ 中选择了 2 个子网,这是不允许的。

我正在寻找一个完全自动化的解决方案或任何最佳实践来做到这一点?

4

1 回答 1

4

如果您知道列表中的哪些子网是私有的,您可以手动选择它们。例如:

Subnets:
  - !Select [0, !Ref SubnetID]
  - !Select [1, !Ref SubnetID]

对于完全自治的解决方案,当您不知道哪些子网是私有的,哪些不是时,您必须开发一个自定义资源lambda 函数,它将感兴趣的子网列表返回到您的 CFN 堆栈中。

于 2020-05-15T22:12:25.977 回答