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?
--
You received this message because you are subscribed to the Google Groups
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jenkinsci-users/1d2825fe-ca64-4678-b73f-d3781db63250%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.