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

已提问 10 个月前194 查看次数
1 回答
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
专家
已回答 10 个月前
  • 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."

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则