CloudFormation Lint Version
1.55.1
What operating system are you using?
Mac
Describe the bug
ScheduleExpression on AWS::CustomerProfiles::Integration is modelled as pattern: ".*", so cfn-lint accepts any string. Customer Profiles actually accepts only four values, compared case-insensitively:
rate(5minutes)
rate(15minutes)
rate(1hours)
rate(1days)
Anything else fails at stack create with <value> is not a supported schedule expression, so a template that lints clean rolls back on deploy. The trap is that the property looks like an EventBridge schedule expression but is not one: rate(1 day), rate(30minutes) and cron(0 6 * * ? *) are all refused.
I confirmed the list by putting 74 candidate values through customer-profiles put-integration. Also rejected: every other number tried (2, 10, 30, 45 minutes; 2, 6, 12, 24 hours; 2, 7, 30 days), singular units such as rate(1day), any whitespace, a leading zero (rate(01days)), and the at(...) form.
The template below exits 0 on 1.55.1 even though the first resource cannot deploy.
Expected behavior
cfn-lint should flag a ScheduleExpression that Customer Profiles will refuse, and stay silent on the four accepted values in any casing.
Reproduction template
AWSTemplateFormatVersion: "2010-09-09"
Resources:
# Rejected at create time: "rate(1 day) is not a supported schedule expression"
BadSchedule:
Type: AWS::CustomerProfiles::Integration
Properties:
DomainName: example-domain
ObjectTypeName: Customer
FlowDefinition:
FlowName: flow-bad
KmsArn: arn:aws:kms:us-west-2:111111111111:key/00000000-0000-0000-0000-000000000000
SourceFlowConfig:
ConnectorType: S3
SourceConnectorProperties:
S3:
BucketName: example-bucket
BucketPrefix: input/
TriggerConfig:
TriggerType: Scheduled
TriggerProperties:
Scheduled:
ScheduleExpression: "rate(1 day)"
DataPullMode: Incremental
Tasks:
- TaskType: Filter
SourceFields: [CustomerId]
ConnectorOperator:
S3: PROJECTION
Accepted by the service, must not be flagged
GoodSchedule:
Type: AWS::CustomerProfiles::Integration
Properties:
DomainName: example-domain
ObjectTypeName: Customer
FlowDefinition:
FlowName: flow-good
KmsArn: arn:aws:kms:us-west-2:111111111111:key/00000000-0000-0000-0000-000000000000
SourceFlowConfig:
ConnectorType: S3
SourceConnectorProperties:
S3:
BucketName: example-bucket
BucketPrefix: input/
TriggerConfig:
TriggerType: Scheduled
TriggerProperties:
Scheduled:
ScheduleExpression: "RATE(1DAYS)"
DataPullMode: Incremental
Tasks:
- TaskType: Filter
SourceFields: [CustomerId]
ConnectorOperator:
S3: PROJECTION
CloudFormation Lint Version
1.55.1
What operating system are you using?
Mac
Describe the bug
ScheduleExpressiononAWS::CustomerProfiles::Integrationis modelled aspattern: ".*", so cfn-lint accepts any string. Customer Profiles actually accepts only four values, compared case-insensitively:Anything else fails at stack create with
<value> is not a supported schedule expression, so a template that lints clean rolls back on deploy. The trap is that the property looks like an EventBridge schedule expression but is not one:rate(1 day),rate(30minutes)andcron(0 6 * * ? *)are all refused.I confirmed the list by putting 74 candidate values through
customer-profiles put-integration. Also rejected: every other number tried (2, 10, 30, 45 minutes; 2, 6, 12, 24 hours; 2, 7, 30 days), singular units such asrate(1day), any whitespace, a leading zero (rate(01days)), and theat(...)form.The template below exits 0 on 1.55.1 even though the first resource cannot deploy.
Expected behavior
cfn-lint should flag a
ScheduleExpressionthat Customer Profiles will refuse, and stay silent on the four accepted values in any casing.Reproduction template
Accepted by the service, must not be flagged