0

Je suis en train de créer un modèle de formation Cloud pour un Route53 Private Hosted Zone où des listes de régions et CVP que le HEP est associé sont fournis en tant que paramètreRoute53 Private Zone Hébergé paramétrées Liste des CVP

VPCIds: 
    Type: List<AWS::EC2::VPC::Id> 
    Description: The Evertz VPC Id 

    Regions: 
    Type: CommaDelimitedList 
    Description: A list that containing the matching regions for the VPCs given 

    NumberOfVPC: 
    Type: Number 

J'ai obtenu des conditions définies pour spécifier le nombre de VPC.

Conditions: 
    2VPC: !Or [ 
    !Equals [!Ref NumberOfVPC, 2], 
    Condition: 3VPC, 
    Condition: 4VPC, 
    Condition: 5VPC, 
    Condition: 6VPC, 
    Condition: 7VPC, 
    Condition: 8VPC 
    ] 
    3VPC: !Or [ 
    !Equals [!Ref NumberOfVPC, 3], 
    Condition: 4VPC, 
    Condition: 5VPC, 
    Condition: 6VPC, 
    Condition: 7VPC, 
    Condition: 8VPC 
    ]... 

malheureusement je n'ai pas été en mesure de créer la liste des HostedZoneVPCs

J'espérais utiliser ces conditions pour fournir AWS :: NoValue à la liste lors de la construction

Route53PrivateHostedZone: 
    Type: "AWS::Route53::HostedZone" 
    Properties: 
     Name: !Ref ZoneName 
     HostedZoneConfig: 
     Comment: String 
     HostedZoneTags: 
     - Key: Name 
      Value: Hosted Zone 
     VPCs: 
     - 
      VPCId: !If [2VPC, !Ref "AWS::NoValue", !Select [0, !Ref VPCIds]] 
      VPCRegion: !If [2VPC, !Ref "AWS::NoValue", !Select [0, !Ref Regions]] 

     VPCs: 
     - VPCId: !If [2VPC, !Select [0, !Ref VPCIds], !Ref "AWS::NoValue"] 
      VPCRegion: !If [2VPC, !Select [0, !Ref Regions], !Ref "AWS::NoValue"] 

     - VPCId: !If [2VPC, !Select [1, !Ref VPCIds], !Ref "AWS::NoValue"] 
      VPCRegion: !If [2VPC, !Select [1, !Ref Regions], !Ref "AWS::NoValue"] 

Cependant cela ne fonctionne pas et ne parvient pas à créer la zone hébergée.

Est-il possible dans Cloudformation de construire la liste de HostedZoneVPCs en utilisant les conditions xVPC que j'ai créées?

Répondre

0

La solution que j'ai actuellement trouvé est d'imbriquer !If et d'utiliser ici pour tomber à la prochaine liste de VPC/région est le nombre ne fait pas beaucoup. Changez également les Conditions pour qu'elles ne soient pas cumulatives;

Conditions: 
    1VPC: !Equals [!Ref NumberOfVPC, 1] 
    2VPC: !Equals [!Ref NumberOfVPC, 2] 
    3VPC: !Equals [!Ref NumberOfVPC, 3] 
    4VPC: !Equals [!Ref NumberOfVPC, 4] 
    5VPC: !Equals [!Ref NumberOfVPC, 5] 
    6VPC: !Equals [!Ref NumberOfVPC, 6] 
    7VPC: !Equals [!Ref NumberOfVPC, 7] 
    8VPC: !Equals [!Ref NumberOfVPC, 8] 

et la propriété VPC devient alors;

VPCs: 
    !If [1VPC, 
    [ 
     {VPCId: !Select [0, !Ref VPCIds], VPCRegion: !Select [0, !Ref Regions]} 
    ], 
     !If [2VPC, 
     [ 
     {VPCId: !Select [0, !Ref VPCIds], VPCRegion: !Select [0, !Ref Regions]}, 
     {VPCId: !Select [1, !Ref VPCIds], VPCRegion: !Select [1, !Ref Regions]} 
     ], 
     !If [3VPC, 
     [ 
      {VPCId: !Select [0, !Ref VPCIds], VPCRegion: !Select [0, !Ref Regions]}, 
      {VPCId: !Select [1, !Ref VPCIds], VPCRegion: !Select [1, !Ref Regions]}, 
      {VPCId: !Select [2, !Ref VPCIds], VPCRegion: !Select [2, !Ref Regions]} 
     ], 
      !If [4VPC, 
      [ 
      {VPCId: !Select [0, !Ref VPCIds], VPCRegion: !Select [0, !Ref Regions]}, 
      {VPCId: !Select [1, !Ref VPCIds], VPCRegion: !Select [1, !Ref Regions]}, 
      {VPCId: !Select [2, !Ref VPCIds], VPCRegion: !Select [2, !Ref Regions]}, 
      {VPCId: !Select [3, !Ref VPCIds], VPCRegion: !Select [3, !Ref Regions]} 
      ], 
      !If [5VPC, 
      [ 
       {VPCId: !Select [0, !Ref VPCIds], VPCRegion: !Select [0, !Ref Regions]}, 
       {VPCId: !Select [1, !Ref VPCIds], VPCRegion: !Select [1, !Ref Regions]}, 
       {VPCId: !Select [2, !Ref VPCIds], VPCRegion: !Select [2, !Ref Regions]}, 
       {VPCId: !Select [3, !Ref VPCIds], VPCRegion: !Select [3, !Ref Regions]}, 
       {VPCId: !Select [4, !Ref VPCIds], VPCRegion: !Select [4, !Ref Regions]} 
      ], 
       !If [6VPC, 
       [ 
       {VPCId: !Select [0, !Ref VPCIds], VPCRegion: !Select [0, !Ref Regions]}, 
       {VPCId: !Select [1, !Ref VPCIds], VPCRegion: !Select [1, !Ref Regions]}, 
       {VPCId: !Select [2, !Ref VPCIds], VPCRegion: !Select [2, !Ref Regions]}, 
       {VPCId: !Select [3, !Ref VPCIds], VPCRegion: !Select [3, !Ref Regions]}, 
       {VPCId: !Select [4, !Ref VPCIds], VPCRegion: !Select [4, !Ref Regions]}, 
       {VPCId: !Select [5, !Ref VPCIds], VPCRegion: !Select [5, !Ref Regions]} 
       ], 
       !If [7VPC, 
       [ 
        {VPCId: !Select [0, !Ref VPCIds], VPCRegion: !Select [0, !Ref Regions]}, 
        {VPCId: !Select [1, !Ref VPCIds], VPCRegion: !Select [1, !Ref Regions]}, 
        {VPCId: !Select [2, !Ref VPCIds], VPCRegion: !Select [2, !Ref Regions]}, 
        {VPCId: !Select [3, !Ref VPCIds], VPCRegion: !Select [3, !Ref Regions]}, 
        {VPCId: !Select [4, !Ref VPCIds], VPCRegion: !Select [4, !Ref Regions]}, 
        {VPCId: !Select [5, !Ref VPCIds], VPCRegion: !Select [5, !Ref Regions]}, 
        {VPCId: !Select [6, !Ref VPCIds], VPCRegion: !Select [6, !Ref Regions]} 
       ], 
        !If [8VPC, 
        [ 
        {VPCId: !Select [0, !Ref VPCIds], VPCRegion: !Select [0, !Ref Regions]}, 
        {VPCId: !Select [1, !Ref VPCIds], VPCRegion: !Select [1, !Ref Regions]}, 
        {VPCId: !Select [2, !Ref VPCIds], VPCRegion: !Select [2, !Ref Regions]}, 
        {VPCId: !Select [3, !Ref VPCIds], VPCRegion: !Select [3, !Ref Regions]}, 
        {VPCId: !Select [4, !Ref VPCIds], VPCRegion: !Select [4, !Ref Regions]}, 
        {VPCId: !Select [5, !Ref VPCIds], VPCRegion: !Select [5, !Ref Regions]}, 
        {VPCId: !Select [6, !Ref VPCIds], VPCRegion: !Select [6, !Ref Regions]}, 
        {VPCId: !Select [7, !Ref VPCIds], VPCRegion: !Select [7, !Ref Regions]} 
        ], 
        !Ref "AWS::NoValue" 
        ] 
       ] 
       ] 
      ] 
      ] 
     ] 
     ] 
    ]