【问题标题】:Select AZs that have Workspaces选择具有工作区的 AZ
【发布时间】:2021-09-10 21:05:38
【问题描述】:

我们有部署到 3 个区域的 CloudFromation 模板,我们使用 !GetAZs 内部函数如下:

  PrivateSubnet2:
    Type: AWS::EC2::Subnet
    Properties:
      CidrBlock: !Ref 'PrivateSubnetCIDR2'
      AvailabilityZone: !Select
        - '1'
        - !GetAZs ''
      Tags:
        - Key: Name
          Value: Private-Subnet-2
      VpcId: !Ref 'VPC'

我们设置了 2 个子网,首先将索引设置为 0,第二个将其设置为 1。我们这样做是因为工作区在特定的可用区域中可用。到目前为止,我们正在部署的 3 个区域在索引 0 和 1 的可用区中都有可用的工作区。

但现在我们要添加另一个可用区,工作区在 1 和 2 索引处可用。

我有一个 PoC,它将在该特定区域的条件下使用 !Equals,但随后它将为该可用区设置一个额外的子网、路由表等整个网络设置。这并不理想。顺便说一句,我的!Equals 条件如下:

    WorkspaceSubnet: !Equals
    - !Ref 'AWS::Region'
    - 'us-east-1'

我想要的是可以在!Equals 条件为真/假的基础上设置索引的东西,如下所示:

  PrivateSubnet1:
    Type: AWS::EC2::Subnet
    Properties:
      CidrBlock: !Ref 'PrivateSubnetCIDR1'
      AvailabilityZone: !if
        - WorkspaceSubnet
        - !Select 
          - '2'
          - !GetAZs ''
        - !Select 
          - '0'
          - !GetAZs ''
      Tags:
        - Key: Name
          Value: Private-Subnet-1
      VpcId: !Ref 'VPC'

但这给了我错误:[cfn-lint] E3002: Property Resources/PrivateSubnet1/Properties/AvailabilityZone has an illegal function Fn::if

【问题讨论】:

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


    【解决方案1】:

    有时我们会犯一些肉眼无法发现的愚蠢错误,当您将其发布到 StackOverflow 上时,您的一些同行会开始审查,而有些人会非常关心以深入挖掘。

    感谢 Mehdi Azhar 我的 Mentee 指出这只是一个小写问题。内部函数!if 以大写字母!If 开头。

    所以正确的代码应该是:

      PrivateSubnet1:
        Type: AWS::EC2::Subnet
        Properties:
          CidrBlock: !Ref 'PrivateSubnetCIDR1'
          AvailabilityZone: !If
            - WorkspaceSubnet
            - !Select 
              - '2'
              - !GetAZs ''
            - !Select 
              - '0'
              - !GetAZs ''
          Tags:
            - Key: Name
              Value: Private-Subnet-1
          VpcId: !Ref 'VPC'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-18
      • 1970-01-01
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多