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

feita há 10 meses194 visualizações
1 Resposta
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
ESPECIALISTA
respondido há 10 meses
  • 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."

Você não está conectado. Fazer login para postar uma resposta.

Uma boa resposta responde claramente à pergunta, dá feedback construtivo e incentiva o crescimento profissional de quem perguntou.

Diretrizes para responder a perguntas