@aws-community/ephemeral
Version:
Ephemeral Stacks! A CDK Stack and Construct that will self-destruct after a specified time period.
30 lines • 3.32 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MakeDestroyableAspect = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const aws_cdk_lib_1 = require("aws-cdk-lib");
const aws_s3_1 = require("aws-cdk-lib/aws-s3");
const BucketCR = 'AutoDeleteObjectsCustomResource';
const ERR = 'in an ephemeral stack without autoDeleteObjects';
class MakeDestroyableAspect {
visit(node) {
if (aws_cdk_lib_1.CfnResource.isCfnResource(node)) {
node.applyRemovalPolicy(aws_cdk_lib_1.RemovalPolicy.DESTROY);
}
if (node instanceof aws_s3_1.Bucket) {
if (!node.node.tryFindChild(BucketCR)) {
throw new Error(`Level 2 Bucket ${ERR}`);
}
}
else if (node instanceof aws_s3_1.CfnBucket) {
if (!node.node.scope?.node.tryFindChild(BucketCR)) {
throw new Error(`Level 1 CfnBucket ${ERR}`);
}
}
}
}
_a = JSII_RTTI_SYMBOL_1;
MakeDestroyableAspect[_a] = { fqn: "@aws-community/ephemeral.MakeDestroyableAspect", version: "2.1.0" };
exports.MakeDestroyableAspect = MakeDestroyableAspect;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS1kZXN0cm95YWJsZS1hc3BlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWFrZS1kZXN0cm95YWJsZS1hc3BlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBa0U7QUFDbEUsK0NBQXVEO0FBR3ZELE1BQU0sUUFBUSxHQUFHLGlDQUFpQyxDQUFDO0FBQ25ELE1BQU0sR0FBRyxHQUFHLGlEQUFpRCxDQUFDO0FBQzlELE1BQWEscUJBQXFCO0lBQ3pCLEtBQUssQ0FBRSxJQUFnQjtRQUM1QixJQUFJLHlCQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ25DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywyQkFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2hEO1FBQ0QsSUFBSSxJQUFJLFlBQVksZUFBTSxFQUFFO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUMsQ0FBQzthQUMxQztTQUNGO2FBQU0sSUFBSSxJQUFJLFlBQVksa0JBQVMsRUFBRTtZQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDakQsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUMsQ0FBQzthQUM3QztTQUNGO0lBQ0gsQ0FBQzs7OztBQWRVLHNEQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElBc3BlY3QsIENmblJlc291cmNlLCBSZW1vdmFsUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQnVja2V0LCBDZm5CdWNrZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHR5cGUgeyBJQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmNvbnN0IEJ1Y2tldENSID0gJ0F1dG9EZWxldGVPYmplY3RzQ3VzdG9tUmVzb3VyY2UnO1xuY29uc3QgRVJSID0gJ2luIGFuIGVwaGVtZXJhbCBzdGFjayB3aXRob3V0IGF1dG9EZWxldGVPYmplY3RzJztcbmV4cG9ydCBjbGFzcyBNYWtlRGVzdHJveWFibGVBc3BlY3QgaW1wbGVtZW50cyBJQXNwZWN0IHtcbiAgcHVibGljIHZpc2l0IChub2RlOiBJQ29uc3RydWN0KTogdm9pZCB7XG4gICAgaWYgKENmblJlc291cmNlLmlzQ2ZuUmVzb3VyY2Uobm9kZSkpIHtcbiAgICAgIG5vZGUuYXBwbHlSZW1vdmFsUG9saWN5KFJlbW92YWxQb2xpY3kuREVTVFJPWSk7XG4gICAgfVxuICAgIGlmIChub2RlIGluc3RhbmNlb2YgQnVja2V0KSB7XG4gICAgICBpZiAoIW5vZGUubm9kZS50cnlGaW5kQ2hpbGQoQnVja2V0Q1IpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTGV2ZWwgMiBCdWNrZXQgJHtFUlJ9YCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgQ2ZuQnVja2V0KSB7XG4gICAgICBpZiAoIW5vZGUubm9kZS5zY29wZT8ubm9kZS50cnlGaW5kQ2hpbGQoQnVja2V0Q1IpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTGV2ZWwgMSBDZm5CdWNrZXQgJHtFUlJ9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=