Skip to content

Commit e02578f

Browse files
revert: "feat(s3): allow user to set Log Group on S3 Bucket autoDeleteObjects provider lambda" (#30590)
Reverts #30394
1 parent 3c36fe9 commit e02578f

File tree

14 files changed

+17
-358
lines changed

14 files changed

+17
-358
lines changed

packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/cdk-s3-bucket-auto-delete-objects.template.json

-14
Original file line numberDiff line numberDiff line change
@@ -144,11 +144,6 @@
144144
" S3 bucket."
145145
]
146146
]
147-
},
148-
"LoggingConfig": {
149-
"LogGroup": {
150-
"Ref": "MyLogGroup5C0DAD85"
151-
}
152147
}
153148
},
154149
"DependsOn": [
@@ -452,15 +447,6 @@
452447
"DependsOn": [
453448
"AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2"
454449
]
455-
},
456-
"MyLogGroup5C0DAD85": {
457-
"Type": "AWS::Logs::LogGroup",
458-
"Properties": {
459-
"LogGroupName": "MyLogGroup",
460-
"RetentionInDays": 731
461-
},
462-
"UpdateReplacePolicy": "Retain",
463-
"DeletionPolicy": "Retain"
464450
}
465451
},
466452
"Mappings": {

packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/manifest.json

-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/tree.json

-25
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.ts

-5
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { App, CustomResource, CustomResourceProvider, RemovalPolicy, Stack, Stac
33
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
44
import { Construct } from 'constructs';
55
import * as s3 from 'aws-cdk-lib/aws-s3';
6-
import * as logs from 'aws-cdk-lib/aws-logs';
76
import { AwsCustomResource, AwsCustomResourcePolicy, PhysicalResourceId } from 'aws-cdk-lib/custom-resources';
87
import { STANDARD_CUSTOM_RESOURCE_PROVIDER_RUNTIME } from '../../config';
98

@@ -56,10 +55,6 @@ class TestStack extends Stack {
5655
resources: [bucketThatWillBeRemoved.bucketArn],
5756
}),
5857
});
59-
60-
s3.Bucket.setAutoDeleteObjectsLogGroup(this, new logs.LogGroup(this, 'MyLogGroup', {
61-
logGroupName: 'MyLogGroup',
62-
}));
6358
}
6459
}
6560

packages/@aws-cdk/custom-resource-handlers/lib/custom-resources-framework/classes.ts

+5-63
Original file line numberDiff line numberDiff line change
@@ -274,59 +274,6 @@ export abstract class HandlerFrameworkClass extends ClassType {
274274
stmt.ret(expr.directCode('this.getOrCreateProvider(scope, uniqueid, props).serviceToken')),
275275
);
276276

277-
const idStatement = stmt.constVar(expr.ident('id'), expr.directCode('`${uniqueid}CustomResourceProvider`'));
278-
const stackFromScopeStatement = stmt.constVar(expr.ident('stack'), expr.directCode('Stack.of(scope)'));
279-
const logContextKeyStatement = stmt.constVar(expr.ident('key'), expr.directCode('`${uniqueid}CustomResourceLogGroup`'));
280-
const getProviderMethod = this.addMethod({
281-
name: 'getProvider',
282-
static: true,
283-
returnType: this.type,
284-
docs: {
285-
summary: 'Returns the stack-level singleton provider or undefined',
286-
},
287-
});
288-
getProviderMethod.addParameter({
289-
name: 'scope',
290-
type: CONSTRUCTS_MODULE.Construct,
291-
});
292-
getProviderMethod.addParameter({
293-
name: 'uniqueid',
294-
type: Type.STRING,
295-
});
296-
getProviderMethod.addBody(
297-
idStatement,
298-
stackFromScopeStatement,
299-
stmt.ret(expr.directCode(`stack.node.tryFindChild(id) as ${this.type}`)),
300-
);
301-
302-
const useLogGroupMethod = this.addMethod({
303-
name: 'useLogGroup',
304-
static: true,
305-
docs: {
306-
summary: 'Set the log group to be used by the singleton provider',
307-
},
308-
});
309-
useLogGroupMethod.addParameter({
310-
name: 'scope',
311-
type: CONSTRUCTS_MODULE.Construct,
312-
});
313-
useLogGroupMethod.addParameter({
314-
name: 'uniqueid',
315-
type: Type.STRING,
316-
});
317-
useLogGroupMethod.addParameter({
318-
name: 'logGroupName',
319-
type: Type.STRING,
320-
});
321-
useLogGroupMethod.addBody(
322-
stackFromScopeStatement,
323-
logContextKeyStatement,
324-
expr.directCode('stack.node.addMetadata(key, logGroupName)'),
325-
stmt.constVar(expr.ident('existing'), expr.directCode('this.getProvider(scope, uniqueid)')),
326-
stmt.if_(expr.directCode('existing'))
327-
.then(expr.directCode('existing.configureLambdaLogGroup(logGroupName)')),
328-
);
329-
330277
const getOrCreateProviderMethod = this.addMethod({
331278
name: 'getOrCreateProvider',
332279
static: true,
@@ -335,7 +282,7 @@ export abstract class HandlerFrameworkClass extends ClassType {
335282
summary: 'Returns a stack-level singleton for the custom resource provider.',
336283
},
337284
});
338-
getOrCreateProviderMethod.addParameter({
285+
const _scope = getOrCreateProviderMethod.addParameter({
339286
name: 'scope',
340287
type: CONSTRUCTS_MODULE.Construct,
341288
});
@@ -349,15 +296,10 @@ export abstract class HandlerFrameworkClass extends ClassType {
349296
optional: true,
350297
});
351298
getOrCreateProviderMethod.addBody(
352-
idStatement,
353-
stackFromScopeStatement,
354-
stmt.constVar(expr.ident('provider'), expr.directCode(`this.getProvider(scope, uniqueid) ?? new ${this.name}(stack, id, props)`)),
355-
logContextKeyStatement,
356-
stmt.constVar(expr.ident('logGroupMetadata'),
357-
expr.directCode('stack.node.metadata.find(m => m.type === key)')),
358-
stmt.if_(expr.directCode('logGroupMetadata?.data'))
359-
.then(expr.directCode('provider.configureLambdaLogGroup(logGroupMetadata.data)')),
360-
stmt.ret(expr.directCode('provider')),
299+
stmt.constVar(expr.ident('id'), expr.directCode('`${uniqueid}CustomResourceProvider`')),
300+
stmt.constVar(expr.ident('stack'), $T(CORE_MODULE.Stack).of(expr.directCode(_scope.spec.name))),
301+
stmt.constVar(expr.ident('existing'), expr.directCode(`stack.node.tryFindChild(id) as ${this.type}`)),
302+
stmt.ret(expr.directCode(`existing ?? new ${this.name}(stack, id, props)`)),
361303
);
362304

363305
const superProps = new ObjectLiteral([

packages/@aws-cdk/custom-resource-handlers/test/custom-resources-framework/expected/node-runtime/custom-resource-provider-core.ts

+2-25
Original file line numberDiff line numberDiff line change
@@ -12,37 +12,14 @@ export class TestProvider extends CustomResourceProviderBase {
1212
return this.getOrCreateProvider(scope, uniqueid, props).serviceToken;
1313
}
1414

15-
/**
16-
* Returns the stack-level singleton provider or undefined
17-
*/
18-
public static getProvider(scope: Construct, uniqueid: string): TestProvider {
19-
const id = `${uniqueid}CustomResourceProvider`;
20-
const stack = Stack.of(scope);
21-
return stack.node.tryFindChild(id) as TestProvider;
22-
}
23-
24-
/**
25-
* Set the log group to be used by the singleton provider
26-
*/
27-
public static useLogGroup(scope: Construct, uniqueid: string, logGroupName: string): void {
28-
const stack = Stack.of(scope);
29-
const key = `${uniqueid}CustomResourceLogGroup`;
30-
stack.node.addMetadata(key, logGroupName);
31-
const existing = this.getProvider(scope, uniqueid);
32-
if (existing) existing.configureLambdaLogGroup(logGroupName);
33-
}
34-
3515
/**
3616
* Returns a stack-level singleton for the custom resource provider.
3717
*/
3818
public static getOrCreateProvider(scope: Construct, uniqueid: string, props?: CustomResourceProviderOptions): TestProvider {
3919
const id = `${uniqueid}CustomResourceProvider`;
4020
const stack = Stack.of(scope);
41-
const provider = this.getProvider(scope, uniqueid) ?? new TestProvider(stack, id, props);
42-
const key = `${uniqueid}CustomResourceLogGroup`;
43-
const logGroupMetadata = stack.node.metadata.find(m => m.type === key);
44-
if (logGroupMetadata?.data) provider.configureLambdaLogGroup(logGroupMetadata.data);
45-
return provider;
21+
const existing = stack.node.tryFindChild(id) as TestProvider;
22+
return existing ?? new TestProvider(stack, id, props);
4623
}
4724

4825
public constructor(scope: Construct, id: string, props?: CustomResourceProviderOptions) {

packages/@aws-cdk/custom-resource-handlers/test/custom-resources-framework/expected/node-runtime/custom-resource-provider.ts

+2-25
Original file line numberDiff line numberDiff line change
@@ -11,37 +11,14 @@ export class TestProvider extends CustomResourceProviderBase {
1111
return this.getOrCreateProvider(scope, uniqueid, props).serviceToken;
1212
}
1313

14-
/**
15-
* Returns the stack-level singleton provider or undefined
16-
*/
17-
public static getProvider(scope: Construct, uniqueid: string): TestProvider {
18-
const id = `${uniqueid}CustomResourceProvider`;
19-
const stack = Stack.of(scope);
20-
return stack.node.tryFindChild(id) as TestProvider;
21-
}
22-
23-
/**
24-
* Set the log group to be used by the singleton provider
25-
*/
26-
public static useLogGroup(scope: Construct, uniqueid: string, logGroupName: string): void {
27-
const stack = Stack.of(scope);
28-
const key = `${uniqueid}CustomResourceLogGroup`;
29-
stack.node.addMetadata(key, logGroupName);
30-
const existing = this.getProvider(scope, uniqueid);
31-
if (existing) existing.configureLambdaLogGroup(logGroupName);
32-
}
33-
3414
/**
3515
* Returns a stack-level singleton for the custom resource provider.
3616
*/
3717
public static getOrCreateProvider(scope: Construct, uniqueid: string, props?: CustomResourceProviderOptions): TestProvider {
3818
const id = `${uniqueid}CustomResourceProvider`;
3919
const stack = Stack.of(scope);
40-
const provider = this.getProvider(scope, uniqueid) ?? new TestProvider(stack, id, props);
41-
const key = `${uniqueid}CustomResourceLogGroup`;
42-
const logGroupMetadata = stack.node.metadata.find(m => m.type === key);
43-
if (logGroupMetadata?.data) provider.configureLambdaLogGroup(logGroupMetadata.data);
44-
return provider;
20+
const existing = stack.node.tryFindChild(id) as TestProvider;
21+
return existing ?? new TestProvider(stack, id, props);
4522
}
4623

4724
public constructor(scope: Construct, id: string, props?: CustomResourceProviderOptions) {

packages/@aws-cdk/custom-resource-handlers/test/custom-resources-framework/expected/python-runtime/custom-resource-provider-core.ts

+2-25
Original file line numberDiff line numberDiff line change
@@ -12,37 +12,14 @@ export class TestProvider extends CustomResourceProviderBase {
1212
return this.getOrCreateProvider(scope, uniqueid, props).serviceToken;
1313
}
1414

15-
/**
16-
* Returns the stack-level singleton provider or undefined
17-
*/
18-
public static getProvider(scope: Construct, uniqueid: string): TestProvider {
19-
const id = `${uniqueid}CustomResourceProvider`;
20-
const stack = Stack.of(scope);
21-
return stack.node.tryFindChild(id) as TestProvider;
22-
}
23-
24-
/**
25-
* Set the log group to be used by the singleton provider
26-
*/
27-
public static useLogGroup(scope: Construct, uniqueid: string, logGroupName: string): void {
28-
const stack = Stack.of(scope);
29-
const key = `${uniqueid}CustomResourceLogGroup`;
30-
stack.node.addMetadata(key, logGroupName);
31-
const existing = this.getProvider(scope, uniqueid);
32-
if (existing) existing.configureLambdaLogGroup(logGroupName);
33-
}
34-
3515
/**
3616
* Returns a stack-level singleton for the custom resource provider.
3717
*/
3818
public static getOrCreateProvider(scope: Construct, uniqueid: string, props?: CustomResourceProviderOptions): TestProvider {
3919
const id = `${uniqueid}CustomResourceProvider`;
4020
const stack = Stack.of(scope);
41-
const provider = this.getProvider(scope, uniqueid) ?? new TestProvider(stack, id, props);
42-
const key = `${uniqueid}CustomResourceLogGroup`;
43-
const logGroupMetadata = stack.node.metadata.find(m => m.type === key);
44-
if (logGroupMetadata?.data) provider.configureLambdaLogGroup(logGroupMetadata.data);
45-
return provider;
21+
const existing = stack.node.tryFindChild(id) as TestProvider;
22+
return existing ?? new TestProvider(stack, id, props);
4623
}
4724

4825
public constructor(scope: Construct, id: string, props?: CustomResourceProviderOptions) {

packages/@aws-cdk/custom-resource-handlers/test/custom-resources-framework/expected/python-runtime/custom-resource-provider.ts

+2-25
Original file line numberDiff line numberDiff line change
@@ -11,37 +11,14 @@ export class TestProvider extends CustomResourceProviderBase {
1111
return this.getOrCreateProvider(scope, uniqueid, props).serviceToken;
1212
}
1313

14-
/**
15-
* Returns the stack-level singleton provider or undefined
16-
*/
17-
public static getProvider(scope: Construct, uniqueid: string): TestProvider {
18-
const id = `${uniqueid}CustomResourceProvider`;
19-
const stack = Stack.of(scope);
20-
return stack.node.tryFindChild(id) as TestProvider;
21-
}
22-
23-
/**
24-
* Set the log group to be used by the singleton provider
25-
*/
26-
public static useLogGroup(scope: Construct, uniqueid: string, logGroupName: string): void {
27-
const stack = Stack.of(scope);
28-
const key = `${uniqueid}CustomResourceLogGroup`;
29-
stack.node.addMetadata(key, logGroupName);
30-
const existing = this.getProvider(scope, uniqueid);
31-
if (existing) existing.configureLambdaLogGroup(logGroupName);
32-
}
33-
3414
/**
3515
* Returns a stack-level singleton for the custom resource provider.
3616
*/
3717
public static getOrCreateProvider(scope: Construct, uniqueid: string, props?: CustomResourceProviderOptions): TestProvider {
3818
const id = `${uniqueid}CustomResourceProvider`;
3919
const stack = Stack.of(scope);
40-
const provider = this.getProvider(scope, uniqueid) ?? new TestProvider(stack, id, props);
41-
const key = `${uniqueid}CustomResourceLogGroup`;
42-
const logGroupMetadata = stack.node.metadata.find(m => m.type === key);
43-
if (logGroupMetadata?.data) provider.configureLambdaLogGroup(logGroupMetadata.data);
44-
return provider;
20+
const existing = stack.node.tryFindChild(id) as TestProvider;
21+
return existing ?? new TestProvider(stack, id, props);
4522
}
4623

4724
public constructor(scope: Construct, id: string, props?: CustomResourceProviderOptions) {

packages/aws-cdk-lib/aws-s3/README.md

-17
Original file line numberDiff line numberDiff line change
@@ -656,23 +656,6 @@ switching this to `false` in a CDK version _before_ `1.126.0` will lead to
656656
all objects in the bucket being deleted. Be sure to update your bucket resources
657657
by deploying with CDK version `1.126.0` or later **before** switching this value to `false`.
658658

659-
Enabling `autoDeleteObjects` creates a stack-wide singleton Lambda that is responsible for deleting objects.
660-
To configure the lambda to use a different log group, use the `Bucket.setAutoDeleteObjectsLogGroup()` method:
661-
662-
```ts
663-
import * as logs from 'aws-cdk-lib/aws-logs';
664-
665-
const bucket = new s3.Bucket(this, 'MyTempFileBucket', {
666-
removalPolicy: cdk.RemovalPolicy.DESTROY,
667-
autoDeleteObjects: true,
668-
});
669-
670-
s3.Bucket.setAutoDeleteObjectsLogGroup(this, new logs.LogGroup(this, 'MyLogGroup', {
671-
logGroupName: 'MyLogGroup',
672-
retention: logs.RetentionDays.FIVE_YEARS
673-
}))
674-
```
675-
676659
## Transfer Acceleration
677660

678661
[Transfer Acceleration](https://docs.aws.amazon.com/AmazonS3/latest/userguide/transfer-acceleration.html) can be configured to enable fast, easy, and secure transfers of files over long distances:

packages/aws-cdk-lib/aws-s3/lib/bucket.ts

-14
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import { parseBucketArn, parseBucketName } from './util';
1010
import * as events from '../../aws-events';
1111
import * as iam from '../../aws-iam';
1212
import * as kms from '../../aws-kms';
13-
import * as logs from '../../aws-logs';
1413
import {
1514
CustomResource,
1615
Duration,
@@ -1467,9 +1466,6 @@ export interface BucketProps {
14671466
*
14681467
* Requires the `removalPolicy` to be set to `RemovalPolicy.DESTROY`.
14691468
*
1470-
* A custom resource along with a provider lambda will be created for
1471-
* emptying the bucket.
1472-
*
14731469
* **Warning** if you have deployed a bucket with `autoDeleteObjects: true`,
14741470
* switching this to `false` in a CDK version *before* `1.126.0` will lead to
14751471
* all objects in the bucket being deleted. Be sure to update your bucket resources
@@ -1886,16 +1882,6 @@ export class Bucket extends BucketBase {
18861882
}
18871883
}
18881884

1889-
/**
1890-
* Set the log group on the stack wide singleton AutoDeleteObjects provider lambda.
1891-
*
1892-
* @param stack the stack with the singleton AutoDeleteObjects provider lambda.
1893-
* @param logGroup the log group to use on the lambda.
1894-
*/
1895-
public static setAutoDeleteObjectsLogGroup(stack: Stack, logGroup: logs.ILogGroup): void {
1896-
AutoDeleteObjectsProvider.useLogGroup(stack, AUTO_DELETE_OBJECTS_RESOURCE_TYPE, logGroup.logGroupName);
1897-
}
1898-
18991885
public readonly bucketArn: string;
19001886
public readonly bucketName: string;
19011887
public readonly bucketDomainName: string;

0 commit comments

Comments
 (0)