diff --git a/packages/@aws-cdk/aws-scheduler-alpha/lib/schedule.ts b/packages/@aws-cdk/aws-scheduler-alpha/lib/schedule.ts index b9e543c5ef802..1d3774d432ed0 100644 --- a/packages/@aws-cdk/aws-scheduler-alpha/lib/schedule.ts +++ b/packages/@aws-cdk/aws-scheduler-alpha/lib/schedule.ts @@ -1,4 +1,4 @@ -import { Duration, IResource, Resource } from 'aws-cdk-lib'; +import { Duration, IResource, Resource, Token } from 'aws-cdk-lib'; import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch'; import * as kms from 'aws-cdk-lib/aws-kms'; import { CfnSchedule } from 'aws-cdk-lib/aws-scheduler'; @@ -324,6 +324,9 @@ export class Schedule extends Resource implements ISchedule { const flexibleTimeWindow = props.timeWindow ?? TimeWindow.off(); this.validateTimeFrame(props.start, props.end); + if (props.scheduleName && !Token.isUnresolved(props.scheduleName) && props.scheduleName.length > 64) { + throw new Error(`scheduleName cannot be longer than 64 characters, got: ${props.scheduleName.length}`); + } const resource = new CfnSchedule(this, 'Resource', { name: this.physicalName, diff --git a/packages/@aws-cdk/aws-scheduler-alpha/test/schedule.test.ts b/packages/@aws-cdk/aws-scheduler-alpha/test/schedule.test.ts index 901c053d3839f..bb2563d46f6ad 100644 --- a/packages/@aws-cdk/aws-scheduler-alpha/test/schedule.test.ts +++ b/packages/@aws-cdk/aws-scheduler-alpha/test/schedule.test.ts @@ -215,6 +215,17 @@ describe('Schedule', () => { }).toThrow('The provided duration must be between 1 minute and 1440 minutes, got 0'); }); + test('throw error when scheduleName exceeds 64 characters', () => { + const name = 'an-extremely-unnecessarily-long-name-exceeding-64-characters-in-length'; + expect(() => { + new Schedule(stack, 'TestSchedule', { + schedule: expr, + target: new SomeLambdaTarget(func, role), + scheduleName: name, + }); + }).toThrow(`scheduleName cannot be longer than 64 characters, got: ${name.length}`); + }); + test('schedule with description', () => { // WHEN new Schedule(stack, 'TestSchedule', {