Skip to content
This repository was archived by the owner on Feb 11, 2026. It is now read-only.

Commit d749e87

Browse files
committed
Aspect を利用してRemovalPolicyをセットする
1 parent 7623cc5 commit d749e87

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

bin/cdk.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
#!/usr/bin/env node
22

33
import 'source-map-support/register';
4-
import { App } from 'aws-cdk-lib';
4+
import { App, Aspects, CfnResource, IAspect, RemovalPolicy } from 'aws-cdk-lib';
5+
import { IConstruct } from 'constructs';
56
import { CdkStack } from '../lib/cdk-stack';
67

78
import { useCapitalize } from '../lib/utils/useCapitalize';
9+
810
const { capitalize } = useCapitalize();
911

1012
const app = new App();
@@ -21,7 +23,7 @@ config['slackWebhookUrl'] = process.env.SLACK_WEBHOOK_URL;
2123

2224
const stackName = `Y2Bot${capitalize(stage)}Stack`;
2325

24-
new CdkStack(app, stackName, {
26+
const cdkStack = new CdkStack(app, stackName, {
2527
stage,
2628
stackName,
2729
...config,
@@ -30,3 +32,16 @@ new CdkStack(app, stackName, {
3032
region: process.env.CDK_DEFAULT_REGION,
3133
},
3234
});
35+
36+
class DeletionPolicySetter implements IAspect {
37+
// eslint-disable-next-line no-unused-vars
38+
constructor(private readonly policy: RemovalPolicy) {}
39+
40+
visit(node: IConstruct): void {
41+
if (node instanceof CfnResource) {
42+
node.applyRemovalPolicy(this.policy)
43+
}
44+
}
45+
}
46+
47+
Aspects.of(cdkStack).add(new DeletionPolicySetter(RemovalPolicy.DESTROY))

0 commit comments

Comments
 (0)