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

posta 10 mesi fa194 visualizzazioni
1 Risposta
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
ESPERTO
con risposta 10 mesi fa
  • 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."

Accesso non effettuato. Accedi per postare una risposta.

Una buona risposta soddisfa chiaramente la domanda, fornisce un feedback costruttivo e incoraggia la crescita professionale del richiedente.

Linee guida per rispondere alle domande