UNPKG

@scloud/cdk-patterns

Version:

Serverless CDK patterns for common infrastructure needs

57 lines 6.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PrivateBucket = void 0; const aws_cdk_lib_1 = require("aws-cdk-lib"); const aws_s3_1 = require("aws-cdk-lib/aws-s3"); /** * A private bucket. * * This bucket will not beaccessible from the internet. * * NB removalPolicy is set to DESTROY by default, but autoDeleteObjects is set to false. * This means that, only if the bucket is empty, it'll be destroyed when removed from the stack. * The rationale is that content you don't want to lose will block bucket deletion and, if * content is expendable, you can set autoDeleteObjects to true. * * @param construct The parent CDK construct. * @param name The bucket name - used as the ID for CDK. * The actual bucket name will be randomised by default. * @param props Any additional properties for the bucket. * These can override the defaults provided by this function. */ class PrivateBucket extends aws_s3_1.Bucket { constructor(scope, id, props) { super(scope, id, { blockPublicAccess: aws_s3_1.BlockPublicAccess.BLOCK_ALL, encryption: aws_s3_1.BucketEncryption.S3_MANAGED, removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY, ...props, }); } /** * Creates a private bucket that will be destroyed, along with all content, when removed from the stack. * * This is useful for content that can be regenerated from source code, e.g. static website files. */ static expendable(scope, id, props) { return new PrivateBucket(scope, id, { autoDeleteObjects: true, removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY, ...props, }); } /** * Creates a private bucket that will be retained, along with all content, when removed from the stack. * * This is useful for content that cannot be regenerated, e.g. user data. */ static retained(scope, id, props) { return new PrivateBucket(scope, id, { autoDeleteObjects: false, removalPolicy: aws_cdk_lib_1.RemovalPolicy.RETAIN, ...props, }); } } exports.PrivateBucket = PrivateBucket; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJpdmF0ZUJ1Y2tldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Qcml2YXRlQnVja2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUE0QztBQUM1QywrQ0FLNEI7QUFHNUI7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsZUFBTTtJQUN2QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTRCO1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsaUJBQWlCLEVBQUUsMEJBQWlCLENBQUMsU0FBUztZQUM5QyxVQUFVLEVBQUUseUJBQWdCLENBQUMsVUFBVTtZQUN2QyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1lBQ3BDLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE0QjtRQUMxRSxPQUFPLElBQUksYUFBYSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDbEMsaUJBQWlCLEVBQUUsSUFBSTtZQUN2QixhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1lBQ3BDLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE0QjtRQUN4RSxPQUFPLElBQUksYUFBYSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDbEMsaUJBQWlCLEVBQUUsS0FBSztZQUN4QixhQUFhLEVBQUUsMkJBQWEsQ0FBQyxNQUFNO1lBQ25DLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQW5DRCxzQ0FtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZW1vdmFsUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtcbiAgQmxvY2tQdWJsaWNBY2Nlc3MsXG4gIEJ1Y2tldCxcbiAgQnVja2V0RW5jcnlwdGlvbixcbiAgQnVja2V0UHJvcHMsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBBIHByaXZhdGUgYnVja2V0LlxuICpcbiAqIFRoaXMgYnVja2V0IHdpbGwgbm90IGJlYWNjZXNzaWJsZSBmcm9tIHRoZSBpbnRlcm5ldC5cbiAqXG4gKiBOQiByZW1vdmFsUG9saWN5IGlzIHNldCB0byBERVNUUk9ZIGJ5IGRlZmF1bHQsIGJ1dCBhdXRvRGVsZXRlT2JqZWN0cyBpcyBzZXQgdG8gZmFsc2UuXG4gKiBUaGlzIG1lYW5zIHRoYXQsIG9ubHkgaWYgdGhlIGJ1Y2tldCBpcyBlbXB0eSwgaXQnbGwgYmUgZGVzdHJveWVkIHdoZW4gcmVtb3ZlZCBmcm9tIHRoZSBzdGFjay5cbiAqIFRoZSByYXRpb25hbGUgaXMgdGhhdCBjb250ZW50IHlvdSBkb24ndCB3YW50IHRvIGxvc2Ugd2lsbCBibG9jayBidWNrZXQgZGVsZXRpb24gYW5kLCBpZlxuICogY29udGVudCBpcyBleHBlbmRhYmxlLCB5b3UgY2FuIHNldCBhdXRvRGVsZXRlT2JqZWN0cyB0byB0cnVlLlxuICpcbiAqIEBwYXJhbSBjb25zdHJ1Y3QgVGhlIHBhcmVudCBDREsgY29uc3RydWN0LlxuICogQHBhcmFtIG5hbWUgVGhlIGJ1Y2tldCBuYW1lIC0gdXNlZCBhcyB0aGUgSUQgZm9yIENESy5cbiAqIFRoZSBhY3R1YWwgYnVja2V0IG5hbWUgd2lsbCBiZSByYW5kb21pc2VkIGJ5IGRlZmF1bHQuXG4gKiBAcGFyYW0gcHJvcHMgQW55IGFkZGl0aW9uYWwgcHJvcGVydGllcyBmb3IgdGhlIGJ1Y2tldC5cbiAqIFRoZXNlIGNhbiBvdmVycmlkZSB0aGUgZGVmYXVsdHMgcHJvdmlkZWQgYnkgdGhpcyBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFByaXZhdGVCdWNrZXQgZXh0ZW5kcyBCdWNrZXQge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFBhcnRpYWw8QnVja2V0UHJvcHM+KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBibG9ja1B1YmxpY0FjY2VzczogQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUxMLFxuICAgICAgZW5jcnlwdGlvbjogQnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VELFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHByaXZhdGUgYnVja2V0IHRoYXQgd2lsbCBiZSBkZXN0cm95ZWQsIGFsb25nIHdpdGggYWxsIGNvbnRlbnQsIHdoZW4gcmVtb3ZlZCBmcm9tIHRoZSBzdGFjay5cbiAgICpcbiAgICogVGhpcyBpcyB1c2VmdWwgZm9yIGNvbnRlbnQgdGhhdCBjYW4gYmUgcmVnZW5lcmF0ZWQgZnJvbSBzb3VyY2UgY29kZSwgZS5nLiBzdGF0aWMgd2Vic2l0ZSBmaWxlcy5cbiAgICovXG4gIHN0YXRpYyBleHBlbmRhYmxlKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogUGFydGlhbDxCdWNrZXRQcm9wcz4pIHtcbiAgICByZXR1cm4gbmV3IFByaXZhdGVCdWNrZXQoc2NvcGUsIGlkLCB7XG4gICAgICBhdXRvRGVsZXRlT2JqZWN0czogdHJ1ZSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwcml2YXRlIGJ1Y2tldCB0aGF0IHdpbGwgYmUgcmV0YWluZWQsIGFsb25nIHdpdGggYWxsIGNvbnRlbnQsIHdoZW4gcmVtb3ZlZCBmcm9tIHRoZSBzdGFjay5cbiAgICpcbiAgICogVGhpcyBpcyB1c2VmdWwgZm9yIGNvbnRlbnQgdGhhdCBjYW5ub3QgYmUgcmVnZW5lcmF0ZWQsIGUuZy4gdXNlciBkYXRhLlxuICAgKi9cbiAgc3RhdGljIHJldGFpbmVkKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogUGFydGlhbDxCdWNrZXRQcm9wcz4pIHtcbiAgICByZXR1cm4gbmV3IFByaXZhdGVCdWNrZXQoc2NvcGUsIGlkLCB7XG4gICAgICBhdXRvRGVsZXRlT2JqZWN0czogZmFsc2UsXG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LlJFVEFJTixcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG59XG4iXX0=