【问题标题】:ELB failure - Multiple subnets in one AZELB 故障 - 一个 AZ 中的多个子网
【发布时间】:2020-05-16 11:05:24
【问题描述】:

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

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

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

其中SubnetID 是一个接受字符串列表的参数。

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

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

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

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation amazon-vpc private-subnet


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。但我正在寻找的是一个完全自动化的解决方案。是否可以共享自定义资源 lambda 的伪代码?或者这样做的最佳做法是什么
    • @vkr 所以自定义资源是唯一的出路。我没有这样的 lambda,但是为了开发我的自定义资源,我通常使用这个 aws 的custom resource helper。它大大简化了自定义资源的开发。
    猜你喜欢
    • 1970-01-01
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 2017-07-10
    • 2020-08-03
    相关资源
    最近更新 更多