Help with cfnValidate() error in pipeline?

78 views
Skip to first unread message

ZillaYT

unread,
Apr 2, 2019, 7:51:48 PM4/2/19
to Jenkins Users
We use Jenkins pipeline, and use AWS plugins that has a cfnValidate() API https://jenkins.io/doc/pipeline/steps/pipeline-aws/. When I run it on my Cloudformation template,

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?

ZillaYT

unread,
Apr 2, 2019, 7:54:28 PM4/2/19
to Jenkins Users
I wanted to add, if I validate the file via AWS CLI (aws cloudformation validate-template --document file://my_template.yaml) it passes.
Reply all
Reply to author
Forward
0 new messages