UNPKG

cdk-nextjs

Version:

Deploy Next.js apps on AWS with CDK

56 lines 6.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handler = void 0; const create_invalidation_1 = require("./create-invalidation"); const prune_fs_1 = require("./prune-fs"); const prune_s3_1 = require("./prune-s3"); const constants_1 = require("../../constants"); const utils_1 = require("../utils"); /** * Performs: * 1. CloudFront Invalidation * 2. Prune EFS old BUILD_ID directories * 3. Prunes objects in S3 that do not have metadata with current BUILD_ID and * were modified over `msTtl` ago (default 30 days). */ const handler = async (event, context) => { (0, utils_1.debug)({ event }); let responseStatus = utils_1.CfnResponseStatus.Failed; try { const props = event.ResourceProperties; if (event.RequestType === "Create" || event.RequestType === "Update") { const { buildId, createInvalidationCommandInput, msTtl, staticAssetsBucketName, } = props; const promises = []; if (createInvalidationCommandInput) { promises.push((0, create_invalidation_1.createInvalidation)(createInvalidationCommandInput)); } (0, prune_fs_1.pruneFs)({ currentBuildId: buildId, mountPath: constants_1.MOUNT_PATH }); if (staticAssetsBucketName) { // will not run for regional promises.push((0, prune_s3_1.pruneS3)({ bucketName: staticAssetsBucketName, currentBuildId: buildId, msTtl: parseInt(msTtl), })); } await Promise.all(promises); responseStatus = utils_1.CfnResponseStatus.Success; } else { responseStatus = utils_1.CfnResponseStatus.Success; } } catch (err) { console.error(err); } finally { await (0, utils_1.cfnResponse)({ event, context, responseStatus, responseData: {}, }); } }; exports.handler = handler; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC1kZXBsb3kubGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xhbWJkYXMvcG9zdC1kZXBsb3kvcG9zdC1kZXBsb3kubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLCtEQUEyRDtBQUMzRCx5Q0FBcUM7QUFDckMseUNBQXFDO0FBQ3JDLCtDQUE2QztBQUU3QyxvQ0FBaUU7QUFNakU7Ozs7OztHQU1HO0FBQ0ksTUFBTSxPQUFPLEdBQXdDLEtBQUssRUFDL0QsS0FBSyxFQUNMLE9BQU8sRUFDUCxFQUFFO0lBQ0YsSUFBQSxhQUFLLEVBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2pCLElBQUksY0FBYyxHQUFHLHlCQUFpQixDQUFDLE1BQU0sQ0FBQztJQUM5QyxJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsa0JBQW1DLENBQUM7UUFDeEQsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3JFLE1BQU0sRUFDSixPQUFPLEVBQ1AsOEJBQThCLEVBQzlCLEtBQUssRUFDTCxzQkFBc0IsR0FDdkIsR0FBRyxLQUFLLENBQUM7WUFDVixNQUFNLFFBQVEsR0FBdUIsRUFBRSxDQUFDO1lBQ3hDLElBQUksOEJBQThCLEVBQUUsQ0FBQztnQkFDbkMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFBLHdDQUFrQixFQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQztZQUNwRSxDQUFDO1lBQ0QsSUFBQSxrQkFBTyxFQUFDLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQVUsRUFBRSxDQUFDLENBQUM7WUFDNUQsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO2dCQUMzQiw0QkFBNEI7Z0JBQzVCLFFBQVEsQ0FBQyxJQUFJLENBQ1gsSUFBQSxrQkFBTyxFQUFDO29CQUNOLFVBQVUsRUFBRSxzQkFBc0I7b0JBQ2xDLGNBQWMsRUFBRSxPQUFPO29CQUN2QixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQztpQkFDdkIsQ0FBQyxDQUNILENBQUM7WUFDSixDQUFDO1lBQ0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVCLGNBQWMsR0FBRyx5QkFBaUIsQ0FBQyxPQUFPLENBQUM7UUFDN0MsQ0FBQzthQUFNLENBQUM7WUFDTixjQUFjLEdBQUcseUJBQWlCLENBQUMsT0FBTyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckIsQ0FBQztZQUFTLENBQUM7UUFDVCxNQUFNLElBQUEsbUJBQVcsRUFBQztZQUNoQixLQUFLO1lBQ0wsT0FBTztZQUNQLGNBQWM7WUFDZCxZQUFZLEVBQUUsRUFBRTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBN0NXLFFBQUEsT0FBTyxXQTZDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VIYW5kbGVyIH0gZnJvbSBcImF3cy1sYW1iZGFcIjtcbmltcG9ydCB7IGNyZWF0ZUludmFsaWRhdGlvbiB9IGZyb20gXCIuL2NyZWF0ZS1pbnZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHBydW5lRnMgfSBmcm9tIFwiLi9wcnVuZS1mc1wiO1xuaW1wb3J0IHsgcHJ1bmVTMyB9IGZyb20gXCIuL3BydW5lLXMzXCI7XG5pbXBvcnQgeyBNT1VOVF9QQVRIIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgUG9zdERlcGxveUN1c3RvbVJlc291cmNlUHJvcGVydGllcyB9IGZyb20gXCIuLi8uLi9uZXh0anMtcG9zdC1kZXBsb3lcIjtcbmltcG9ydCB7IGNmblJlc3BvbnNlLCBDZm5SZXNwb25zZVN0YXR1cywgZGVidWcgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxudHlwZSBSZXNvdXJjZVByb3BzID0gUG9zdERlcGxveUN1c3RvbVJlc291cmNlUHJvcGVydGllcyAmIHtcbiAgU2VydmljZVRva2VuOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIFBlcmZvcm1zOlxuICogMS4gQ2xvdWRGcm9udCBJbnZhbGlkYXRpb25cbiAqIDIuIFBydW5lIEVGUyBvbGQgQlVJTERfSUQgZGlyZWN0b3JpZXNcbiAqIDMuIFBydW5lcyBvYmplY3RzIGluIFMzIHRoYXQgZG8gbm90IGhhdmUgbWV0YWRhdGEgd2l0aCBjdXJyZW50IEJVSUxEX0lEIGFuZFxuICogd2VyZSBtb2RpZmllZCBvdmVyIGBtc1R0bGAgYWdvIChkZWZhdWx0IDMwIGRheXMpLlxuICovXG5leHBvcnQgY29uc3QgaGFuZGxlcjogQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUhhbmRsZXIgPSBhc3luYyAoXG4gIGV2ZW50LFxuICBjb250ZXh0LFxuKSA9PiB7XG4gIGRlYnVnKHsgZXZlbnQgfSk7XG4gIGxldCByZXNwb25zZVN0YXR1cyA9IENmblJlc3BvbnNlU3RhdHVzLkZhaWxlZDtcbiAgdHJ5IHtcbiAgICBjb25zdCBwcm9wcyA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcyBhcyBSZXNvdXJjZVByb3BzO1xuICAgIGlmIChldmVudC5SZXF1ZXN0VHlwZSA9PT0gXCJDcmVhdGVcIiB8fCBldmVudC5SZXF1ZXN0VHlwZSA9PT0gXCJVcGRhdGVcIikge1xuICAgICAgY29uc3Qge1xuICAgICAgICBidWlsZElkLFxuICAgICAgICBjcmVhdGVJbnZhbGlkYXRpb25Db21tYW5kSW5wdXQsXG4gICAgICAgIG1zVHRsLFxuICAgICAgICBzdGF0aWNBc3NldHNCdWNrZXROYW1lLFxuICAgICAgfSA9IHByb3BzO1xuICAgICAgY29uc3QgcHJvbWlzZXM6IFByb21pc2U8dW5rbm93bj5bXSA9IFtdO1xuICAgICAgaWYgKGNyZWF0ZUludmFsaWRhdGlvbkNvbW1hbmRJbnB1dCkge1xuICAgICAgICBwcm9taXNlcy5wdXNoKGNyZWF0ZUludmFsaWRhdGlvbihjcmVhdGVJbnZhbGlkYXRpb25Db21tYW5kSW5wdXQpKTtcbiAgICAgIH1cbiAgICAgIHBydW5lRnMoeyBjdXJyZW50QnVpbGRJZDogYnVpbGRJZCwgbW91bnRQYXRoOiBNT1VOVF9QQVRIIH0pO1xuICAgICAgaWYgKHN0YXRpY0Fzc2V0c0J1Y2tldE5hbWUpIHtcbiAgICAgICAgLy8gd2lsbCBub3QgcnVuIGZvciByZWdpb25hbFxuICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgIHBydW5lUzMoe1xuICAgICAgICAgICAgYnVja2V0TmFtZTogc3RhdGljQXNzZXRzQnVja2V0TmFtZSxcbiAgICAgICAgICAgIGN1cnJlbnRCdWlsZElkOiBidWlsZElkLFxuICAgICAgICAgICAgbXNUdGw6IHBhcnNlSW50KG1zVHRsKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICAgIHJlc3BvbnNlU3RhdHVzID0gQ2ZuUmVzcG9uc2VTdGF0dXMuU3VjY2VzcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzcG9uc2VTdGF0dXMgPSBDZm5SZXNwb25zZVN0YXR1cy5TdWNjZXNzO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcihlcnIpO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGNmblJlc3BvbnNlKHtcbiAgICAgIGV2ZW50LFxuICAgICAgY29udGV4dCxcbiAgICAgIHJlc3BvbnNlU3RhdHVzLFxuICAgICAgcmVzcG9uc2VEYXRhOiB7fSxcbiAgICB9KTtcbiAgfVxufTtcbiJdfQ==