diff --git a/packages/@aws-cdk/aws-glue-alpha/lib/job.ts b/packages/@aws-cdk/aws-glue-alpha/lib/job.ts index 825511c1fdfab..229d02173dd58 100644 --- a/packages/@aws-cdk/aws-glue-alpha/lib/job.ts +++ b/packages/@aws-cdk/aws-glue-alpha/lib/job.ts @@ -384,13 +384,13 @@ export interface SparkUIProps { /** * The bucket where the Glue job stores the logs. * - * @default a new bucket will be created. + * @default - a new bucket will be created. */ readonly bucket?: s3.IBucket; /** * The path inside the bucket (objects prefix) where the Glue job stores the logs. - * Use format `'/foo/bar'` + * Use format `'foo/bar/'` * * @default - the logs will be written at the root of the bucket */ @@ -406,13 +406,15 @@ export interface SparkUIProps { export interface SparkUILoggingLocation { /** * The bucket where the Glue job stores the logs. + * + * @default - a new bucket will be created. */ readonly bucket: s3.IBucket; /** * The path inside the bucket (objects prefix) where the Glue job stores the logs. * - * @default '/' - the logs will be written at the root of the bucket + * @default - the logs will be written at the root of the bucket */ readonly prefix?: string; } @@ -840,12 +842,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 +856,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}`, }, }); });