3 votes

AWS/Cloudformation : Comment exporter/importer une valeur de paramètre vers une autre pile (YAML)

J'ai une question simple. Je teste l'exportation/importation de valeurs dans la formation de nuages.

La question est : Comment créer des ressources basées sur des conditions liées d'une autre pile ?

Je pense que je devrais importer la valeur d'une autre pile, mais je ne sais pas comment faire.....

C'est mon "export-test-stack".

AWSTemplateFormatVersion: '2010-09-09'

Description: Export

Parameters:
  EnvType: 
    Description: How many Instances you want to deploy?
    Default: two
    Type: String
    AllowedValues: 
      - two
      - three
    ConstraintDescription: must specify number of deployed Instances

Conditions: 
  Deploy3EC2: !Equals [ !Ref EnvType, three ]

Resources:
  Ec2Instance1:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: t2.micro
      SecurityGroupIds:
      - sg-5d011027
      ImageId: ami-0b33d91d
  Ec2Instance2:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: t2.micro  
      SecurityGroupIds:
      - sg-5d011027
      ImageId: ami-0b33d91d
  Ec2Instance3:
    Type: AWS::EC2::Instance
    Condition: Deploy3EC2
    Properties:
      InstanceType: t2.micro
      SecurityGroupIds:
      - sg-5d011027
      ImageId: ami-0b33d91d

Outputs:
  EC2Conditions:
    Description: Number of deployed instances
    Value: !Ref EnvType
    Export:
      Name: blablabla

C'est mon "import-test-stack".

AWSTemplateFormatVersion: '2010-09-09'

Description: Import

Resources:
  Ec2Instance1:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: t2.micro
      SecurityGroupIds:
      - sg-7309dd0a
      ImageId: ami-70edb016
  Ec2Instance2:
    Type: AWS::EC2::Instance
    Condition: ??????  <<<<<<<<<
    Properties:
      InstanceType: t2.micro  
      SecurityGroupIds:
      - sg-7309dd0a
      ImageId: ami-70edb016

Il s'agit de la référence à la pile croisée, donc je veux déployer Ec2Instance2 dans "import-test-stack" seulement si je choisis de déployer trois Instances dans "export-test-stack" précédent. Comment faire ?

Donc si je choisis de déployer trois instances, je veux utiliser la condition dans "import stack" pour déployer deux autres instances, si je choisis de déployer deux, il ne déploiera qu'une seule instance dans "import-stack".

Je sais comment les conditions fonctionnent, mais je n'arrive toujours pas à trouver le moyen, comment utiliser les piles de référence croisée.

Je sais que c'est un exemple stupide, mais je voulais juste tester cela sur un modèle aussi simple que possible.

0voto

Olli Points 56

Vous avez deux choix : continuer avec des piles séparées ou les combiner pour créer une pile imbriquée.

Avec les piles imbriquées, vous pouvez utiliser les sorties d'une pile comme entrées d'une autre pile.

Si vous voulez continuer à utiliser des piles séparées, utilisez Fn::ImportValue pour importer les valeurs de sortie exportées par une autre pile.

Les deux angles ont été couverts dans Exportation des valeurs de sortie de la pile page. En outre, le marche à suivre pour les références croisées pourrait vous aider si vous choisissez d'utiliser Fn::ImportValue .

0voto

crazyguyjk Points 3

Cela vous permettra d'importer la valeur correcte : Fn::ImportValue : EC2Conditions

Vous pouvez également utiliser des règles. Vous pouvez faire en sorte que la règle soit basée sur la valeur de votre sortie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X