UNPKG

@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
"use strict"; 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=