From f6cca37c54c94ed04eacad28dd67e039eee644a2 Mon Sep 17 00:00:00 2001 From: Mike Wrighton Date: Mon, 9 Oct 2023 17:11:21 -0400 Subject: [PATCH] Fix prefix validation logic in aws-glue-alpha. --- packages/@aws-cdk/aws-glue-alpha/lib/job.ts | 10 +++++----- packages/@aws-cdk/aws-glue-alpha/test/job.test.ts | 12 ++++++------ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/@aws-cdk/aws-glue-alpha/lib/job.ts b/packages/@aws-cdk/aws-glue-alpha/lib/job.ts index 825511c1fdfab..5b56b260ae841 100644 --- a/packages/@aws-cdk/aws-glue-alpha/lib/job.ts +++ b/packages/@aws-cdk/aws-glue-alpha/lib/job.ts @@ -840,12 +840,12 @@ export class Job extends JobBase { const errors: string[] = []; - if (!prefix.startsWith('/')) { - errors.push('Prefix must begin with \'/\''); + if (prefix.startsWith('/')) { + errors.push('Prefix must not begin with \'/\''); } - if (prefix.endsWith('/')) { - errors.push('Prefix must not end with \'/\''); + if (!prefix.endsWith('/')) { + errors.push('Prefix must end with \'/\''); } if (errors.length > 0) { @@ -854,7 +854,7 @@ export class Job extends JobBase { } private cleanPrefixForGrant(prefix?: string): string | undefined { - return prefix !== undefined ? prefix.slice(1) + '/*' : undefined; + return prefix !== undefined ? `${prefix}*` : undefined; } private setupContinuousLogging(role: iam.IRole, props: ContinuousLoggingProps) { diff --git a/packages/@aws-cdk/aws-glue-alpha/test/job.test.ts b/packages/@aws-cdk/aws-glue-alpha/test/job.test.ts index cfea34c396147..748d89b5668a2 100644 --- a/packages/@aws-cdk/aws-glue-alpha/test/job.test.ts +++ b/packages/@aws-cdk/aws-glue-alpha/test/job.test.ts @@ -632,14 +632,14 @@ describe('Job', () => { }); describe('with bucket and path provided', () => { const sparkUIBucketName = 'sparkbucketname'; - const prefix = '/foob/bart'; - const badPrefix = 'foob/bart/'; + const prefix = 'foob/bart/'; + const badPrefix = '/foob/bart'; let sparkUIBucket: s3.IBucket; const expectedErrors = [ `Invalid prefix format (value: ${badPrefix})`, - 'Prefix must begin with \'/\'', - 'Prefix must not end with \'/\'', + 'Prefix must not begin with \'/\'', + 'Prefix must end with \'/\'', ].join(EOL); it('fails if path is mis-formatted', () => { expect(() => new glue.Job(stack, 'BadPrefixJob', { @@ -699,7 +699,7 @@ describe('Job', () => { [ 'arn:', { Ref: 'AWS::Partition' }, - `:s3:::sparkbucketname${prefix}/*`, + `:s3:::sparkbucketname/${prefix}*`, ], ], }, @@ -718,7 +718,7 @@ describe('Job', () => { Template.fromStack(stack).hasResourceProperties('AWS::Glue::Job', { DefaultArguments: { '--enable-spark-ui': 'true', - '--spark-event-logs-path': `s3://${sparkUIBucketName}${prefix}`, + '--spark-event-logs-path': `s3://${sparkUIBucketName}/${prefix}`, }, }); });