web-dev-qa-db-fra.com

Obtenir la zone de disponibilité du paramètre de sous-réseau dans CloudFormation

J'ai

Parameters
  Zookeeper1SubnetParam:
    Description: Subnet where Zookeeper 1 should run
    Type: AWS::EC2::Subnet::Id
  Zookeeper1AZ:
    Description: Availability Zone of the Subnet
    Type: AWS::EC2::AvailabilityZone::Name

À partir de là, je crée un ENI (qui nécessite un sous-réseau) et un EBS Volume (qui nécessite une zone de disponibilité).

Voici l'ENI:

Zookeeper1IPResource:
    Properties:
      Description: Zookeeper1-IP
      GroupSet:
        - Fn::GetAtt:
            - ZookeeperSecurityGroup
            - GroupId
      PrivateIpAddress:
        Ref: Zookeeper1IPParam
      SubnetId:
        Ref: Zookeeper1SubnetParam
    Type: AWS::EC2::NetworkInterface

Et voici l'EBS:

Zookeeper1EBSVolume:
    Properties:
      AvailabilityZone:
        Ref: Zookeeper1AZ
      Size: 8
      VolumeType: gp2
    Type: AWS::EC2::Volume

Je trouve cela très mauvais pour l'expérience utilisateur, de demander également en tant que paramètre pour une zone de disponibilité, car il peut être déduit du sous-réseau sélectionné

Maintenant, la question à un million de dollars, comment puis-je obtenir la zone de disponibilité du sous-réseau dans CloudFormation? Autant que je sache, je ne peux pas utiliser GetAtt for AZ sur mon ENI. 

Toute solution bienvenue!

7
Stephane

Pour répondre à votre question,vous ne pouvez pasextraire la zone de disponibilité du sous-réseau.

Mais si vous avez le contrôle total du modèle ou des ressources fournissant le paramètre à votre modèle, il existe des solutions de contournement

Si vous avez le contrôle sur la source pour vous fournir le paramètre Subnet, vous pouvez également renvoyer le Availability Zone à partir de cette source en tant que Outputs et le fournir dans votre modèle en tant que paramètre permettant de créer ENI et EBS.

En outre, vous pouvez également créer le sous-réseau dans le même modèle que vous créerez l’ENI et l’EBS et utiliserez le { "Fn::GetAtt" : [ "mySubnet", "AvailabilityZone" ] }.

Question (désolé, mon représentant ne me permet pas encore de commenter)

Avez-vous des valeurs ou des ressources dynamiques à créer qui dépendent des zones de disponibilité? Si oui, vous pouvez créer Mappages et si cela ne suffit pas, vous pouvez ajouter Conditions dans votre modèle.

1
groobie newbie