CloudFormation Conditions Query

0

I have a CloudFormation template with me and I want to have a choice of whether to use Existing VPC,Subnet for creating an EC2instance using Input parameter. What I am looking for is something like this:- The template will have a parameter "UseExistingResources", if user selects 'true' and provide existing resources ID in other inputs like "ExistingVpcId" , "ExistingSubnetId" then it should use the existing ones. And if the user selects "false" and then if user left "ExistingVpcId" , "ExistingSubnetId" either empty or provide something then it should be ignored and the template should create new resources.

Can anyone please provide a condition statement to deal with this.

Thanks

demandé il y a 10 mois194 vues
1 réponse
0

Hi.

First you need to create a Condition in the template:

AWSTemplateFormatVersion: "2010-09-09"
Parameters:
   UseExistingResources:
   Type: String
   Default: false
    AllowedValues:
      - true
      - false

Conditions:
  DoUseExistingResources: !Equals [!Ref UseExistingResources, true]

....

Then you need to create the Instance using the condition specify either the existing resources or the new, something like this.

EC2Instanace:
   Type: AWS::EC2::Instance
   Properties: 
      ......
      SubnetId:
         Fn::If:
            [DoUseExistingResources, !Ref ExistingSubnetID, !Ref NewCreatedSubnetId]

Hope that helps you.

profile picture
EXPERT
répondu il y a 10 mois
  • Hi, Thanks for answering, Yeah this is what exactly I am doing. But I also have one requirement that If the user selects "UseExistingResources = False" then the subsequent input parameter which i am using for Asking Existing SubnetID,CVP in case user selects "UseExistingResources = True" should be left empty. Currently my template is working fine if I use "UseExistingResources = False" and provide any random values as input to the Existing resorces parameter. But I need to find a way in which user can left the subsequent input parameter empty if they chooses "UseExistingResources = False".

    If I leave the subsequent input parameter empty then I am getting error as follows: "Parameter validation failed: parameter value for parameter name ExistingSubnetId does not exist, parameter value for parameter name ExistingVpcId does not exist, parameter value for parameter name ExistingSecurityGroupId does not exist. Rollback requested by user."

Vous n'êtes pas connecté. Se connecter pour publier une réponse.

Une bonne réponse répond clairement à la question, contient des commentaires constructifs et encourage le développement professionnel de la personne qui pose la question.

Instructions pour répondre aux questions