cdk-nextjs
Version:
Deploy Next.js apps on AWS with CDK
56 lines • 6.74 kB
JavaScript
;
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==