CloudFormation - Лучшее обнаружение подсетей / AZ EC2 для списков RDS DBSubnetGroup? - PullRequest
1 голос
/ 06 марта 2019

cfn-lint жалуется на жесткое кодирование зон доступности, когда это делается так:

Resources:
  SubnetWest2a:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: us-west-2a
      CidrBlock: 10.0.0.0/24
      VpcId: !Ref GlobalVPC

  SubnetWest2b:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: us-west-2b
      CidrBlock: 10.0.1.0/24
      VpcId: !Ref GlobalVPC

  SubnetWest2c:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: us-west-2c
      CidrBlock: 10.0.2.0/24
      VpcId: !Ref GlobalVPC

Поэтому я сделал это вместо этого:

Resources:
  #...
  SubnetWest1:
    Type: AWS::EC2::Subnet
    Properties:
      CidrBlock: 10.0.0.0/24
      VpcId: !Ref GlobalVPC
      AvailabilityZone: !Select
        - 0
        - Fn::GetAZs: !Ref 'AWS::Region'

  SubnetWest2:
    Type: AWS::EC2::Subnet
    Properties:
      CidrBlock: 10.0.1.0/24
      VpcId: !Ref GlobalVPC
      AvailabilityZone: !Select
        - 1
        - Fn::GetAZs: !Ref 'AWS::Region'

  SubnetWest3:
    Type: AWS::EC2::Subnet
    Properties:
      CidrBlock: 10.0.2.0/24
      VpcId: !Ref GlobalVPC
      AvailabilityZone: !Select
        - 2
        - Fn::GetAZs: !Ref 'AWS::Region'

Но предостережение происходит от Fn :: GetAZs docs :

Как и в случае ответа от команды CLI AWS описать-доступности-зон, порядок результатов из функции Fn :: GetAZs не гарантируетсяи может изменяться при добавлении новых зон доступности.

Раздел, который зависит от этих подсетей и блоков CIDR:

GlobalDBSubnetGroup:
  Type: AWS::RDS::DBSubnetGroup
  Properties:
    DBSubnetGroupDescription: Multi-AZ RDS subnet group
    SubnetIds:
      - !Ref SubnetWest1
      - !Ref SubnetWest2
      - !Ref SubnetWest3

Учитывая эти два взаимоисключающих рекомендацииподсказки , есть ли лучший способ обнаружить (или лучший способ создать эту коллекцию взаимозависимых ресурсов для RDS с несколькими AZ), а также получить детерминированные результаты при каждом запуске этого стека?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...