@scloud/cdk-patterns
Version:
Serverless CDK patterns for common infrastructure needs
54 lines • 6.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.privateBucket = privateBucket;
exports.kmsBucket = kmsBucket;
const aws_cdk_lib_1 = require("aws-cdk-lib");
const aws_kms_1 = require("aws-cdk-lib/aws-kms");
const aws_s3_1 = require("aws-cdk-lib/aws-s3");
/**
* @deprecated Use PrivateBucket instead
*
* A private bucket bucket.
* @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.
* @returns A new Bucket
*/
function privateBucket(construct, name, props = {}) {
return new aws_s3_1.Bucket(construct, name, {
blockPublicAccess: aws_s3_1.BlockPublicAccess.BLOCK_ALL,
encryption: aws_s3_1.BucketEncryption.S3_MANAGED,
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
...props,
});
}
/**
* @deprecated Use KmsBucket instead
*
* A bucket with a KMS key.
* @param stack The parent CDK stack.
* @param name The bucket name - used as the bucket and key IDs 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.
* @returns An s3.Bucket
*/
function kmsBucket(stack, name, props = {}) {
// We set a key alias because this seems to be the only
// identifying information shown in the list in the AWS console:
const key = new aws_kms_1.Key(stack, `BucketKey${name}`, { removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY, alias: `${stack.stackName}/${name}`, description: name });
const bucket = new aws_s3_1.Bucket(stack, name, {
blockPublicAccess: aws_s3_1.BlockPublicAccess.BLOCK_ALL,
encryption: aws_s3_1.BucketEncryption.KMS,
bucketKeyEnabled: false,
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
...props,
});
return {
bucket,
key,
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RlcHJlY2F0ZWQvYnVja2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBcUJBLHNDQU9DO0FBYUQsOEJBb0JDO0FBN0RELDZDQUFtRDtBQUNuRCxpREFBMEM7QUFDMUMsK0NBSzRCO0FBRzVCOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFnQixhQUFhLENBQUMsU0FBb0IsRUFBRSxJQUFZLEVBQUUsUUFBcUIsRUFBRTtJQUN2RixPQUFPLElBQUksZUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUU7UUFDakMsaUJBQWlCLEVBQUUsMEJBQWlCLENBQUMsU0FBUztRQUM5QyxVQUFVLEVBQUUseUJBQWdCLENBQUMsVUFBVTtRQUN2QyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1FBQ3BDLEdBQUcsS0FBSztLQUNULENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBZ0IsU0FBUyxDQUN2QixLQUFZLEVBQ1osSUFBWSxFQUNaLFFBQXFCLEVBQUU7SUFFdkIsdURBQXVEO0lBQ3ZELGdFQUFnRTtJQUNoRSxNQUFNLEdBQUcsR0FBRyxJQUFJLGFBQUcsQ0FBQyxLQUFLLEVBQUUsWUFBWSxJQUFJLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSwyQkFBYSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2pKLE1BQU0sTUFBTSxHQUFHLElBQUksZUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUU7UUFDckMsaUJBQWlCLEVBQUUsMEJBQWlCLENBQUMsU0FBUztRQUM5QyxVQUFVLEVBQUUseUJBQWdCLENBQUMsR0FBRztRQUNoQyxnQkFBZ0IsRUFBRSxLQUFLO1FBQ3ZCLGFBQWEsRUFBRSwyQkFBYSxDQUFDLE9BQU87UUFDcEMsR0FBRyxLQUFLO0tBQ1QsQ0FBQyxDQUFDO0lBRUgsT0FBTztRQUNMLE1BQU07UUFDTixHQUFHO0tBQ0osQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZW1vdmFsUG9saWN5LCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEtleSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0IHtcbiAgQmxvY2tQdWJsaWNBY2Nlc3MsXG4gIEJ1Y2tldCxcbiAgQnVja2V0RW5jcnlwdGlvbixcbiAgQnVja2V0UHJvcHMsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgUHJpdmF0ZUJ1Y2tldCBpbnN0ZWFkXG4gKlxuICogQSBwcml2YXRlIGJ1Y2tldCBidWNrZXQuXG4gKiBAcGFyYW0gY29uc3RydWN0IFRoZSBwYXJlbnQgQ0RLIGNvbnN0cnVjdC5cbiAqIEBwYXJhbSBuYW1lIFRoZSBidWNrZXQgbmFtZSAtIHVzZWQgYXMgdGhlIElEIGZvciBDREsuXG4gKiBUaGUgYWN0dWFsIGJ1Y2tldCBuYW1lIHdpbGwgYmUgcmFuZG9taXNlZCBieSBkZWZhdWx0LlxuICogQHBhcmFtIHByb3BzIEFueSBhZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIHRoZSBidWNrZXQuXG4gKiBUaGVzZSBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHRzIHByb3ZpZGVkIGJ5IHRoaXMgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIG5ldyBCdWNrZXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByaXZhdGVCdWNrZXQoY29uc3RydWN0OiBDb25zdHJ1Y3QsIG5hbWU6IHN0cmluZywgcHJvcHM6IEJ1Y2tldFByb3BzID0ge30pOiBCdWNrZXQge1xuICByZXR1cm4gbmV3IEJ1Y2tldChjb25zdHJ1Y3QsIG5hbWUsIHtcbiAgICBibG9ja1B1YmxpY0FjY2VzczogQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUxMLFxuICAgIGVuY3J5cHRpb246IEJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCxcbiAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgLi4ucHJvcHMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBLbXNCdWNrZXQgaW5zdGVhZFxuICpcbiAqIEEgYnVja2V0IHdpdGggYSBLTVMga2V5LlxuICogQHBhcmFtIHN0YWNrIFRoZSBwYXJlbnQgQ0RLIHN0YWNrLlxuICogQHBhcmFtIG5hbWUgVGhlIGJ1Y2tldCBuYW1lIC0gdXNlZCBhcyB0aGUgYnVja2V0IGFuZCBrZXkgSURzIGZvciBDREsuXG4gKiBUaGUgYWN0dWFsIGJ1Y2tldCBuYW1lIHdpbGwgYmUgcmFuZG9taXNlZCBieSBkZWZhdWx0LlxuICogQHBhcmFtIHByb3BzIEFueSBhZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIHRoZSBidWNrZXQuXG4gKiBUaGVzZSBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHRzIHByb3ZpZGVkIGJ5IHRoaXMgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBbiBzMy5CdWNrZXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGttc0J1Y2tldChcbiAgc3RhY2s6IFN0YWNrLFxuICBuYW1lOiBzdHJpbmcsXG4gIHByb3BzOiBCdWNrZXRQcm9wcyA9IHt9LFxuKTogeyBidWNrZXQ6IEJ1Y2tldCwga2V5PzogS2V5OyB9IHtcbiAgLy8gV2Ugc2V0IGEga2V5IGFsaWFzIGJlY2F1c2UgdGhpcyBzZWVtcyB0byBiZSB0aGUgb25seVxuICAvLyBpZGVudGlmeWluZyBpbmZvcm1hdGlvbiBzaG93biBpbiB0aGUgbGlzdCBpbiB0aGUgQVdTIGNvbnNvbGU6XG4gIGNvbnN0IGtleSA9IG5ldyBLZXkoc3RhY2ssIGBCdWNrZXRLZXkke25hbWV9YCwgeyByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksIGFsaWFzOiBgJHtzdGFjay5zdGFja05hbWV9LyR7bmFtZX1gLCBkZXNjcmlwdGlvbjogbmFtZSB9KTtcbiAgY29uc3QgYnVja2V0ID0gbmV3IEJ1Y2tldChzdGFjaywgbmFtZSwge1xuICAgIGJsb2NrUHVibGljQWNjZXNzOiBCbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTEwsXG4gICAgZW5jcnlwdGlvbjogQnVja2V0RW5jcnlwdGlvbi5LTVMsXG4gICAgYnVja2V0S2V5RW5hYmxlZDogZmFsc2UsXG4gICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIC4uLnByb3BzLFxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGJ1Y2tldCxcbiAgICBrZXksXG4gIH07XG59XG4iXX0=