AWSTemplateFormatVersion: '2010-09-09'
Parameters:
AlbName:
Type: String
Description: 'Parameter to override ALB name'
Default: ''
RedirectUrl:
Type: String
Description: 'URL to redirect traffic to'
Default: ''
SslCertificateArn:
Type: String
Description: 'SSL certificate ARN'
Default: ''
VPCStackNameParameter:
Type: String
Description: 'CloudFormation stack name of the VPC'
Default: 'ProductionVPC'
Conditions:
ProdEnvironment:
!Equals [ !Ref VPCStackNameParameter, 'ProductionVPC' ]
CertExists:
!Not [!Equals [!Ref SslCertificateArn, ""]]
Resources:
Alb:
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
Condition: CertExists
Properties:
Name: !Ref AlbName
Scheme: 'internet-facing'
IpAddressType: 'ipv4'
SecurityGroups:
-
Fn::ImportValue:
!Sub "${VPCStackNameParameter}-ELBSGID"
Subnets:
-
Fn::ImportValue:
!Sub "${VPCStackNameParameter}-SubnetPublic1ID"
-
Fn::ImportValue:
!Sub "${VPCStackNameParameter}-SubnetPublic2ID"
LoadBalancerAttributes:
- Key: idle_timeout.timeout_seconds
Value: '240'
Tags:
-
Key: Name
Value: !Sub "${AWS::StackName}-lb"
-
Key: Product
Value: "Zift"
I get
com.amazonaws.services.cloudformation.model.AmazonCloudFormationException: Template format error: Every Condition member must be a string. (Service: AmazonCloudFormation; Status Code: 400; Error Code: ValidationError; Request ID: f6f203b9-5593-11e9-833d-1d475e1ca17e) at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1632) at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1304) at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1058) at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:743) at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:717) at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699) at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667) at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649) at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513) at com.amazonaws.services.cloudformation.AmazonCloudFormationClient.doInvoke(AmazonCloudFormationClient.java:2733) at com.amazonaws.services.cloudformation.AmazonCloudFormationClient.invoke(AmazonCloudFormationClient.java:2709) at com.amazonaws.services.cloudformation.AmazonCloudFormationClient.executeValidateTemplate(AmazonCloudFormationClient.java:2673) at com.amazonaws.services.cloudformation.AmazonCloudFormationClient.validateTemplate(AmazonCloudFormationClient.java:2648) at de.taimos.pipeline.aws.cloudformation.CFNValidateStep$Execution$1.run(CFNValidateStep.java:141) Finished: FAILURE
What gives?