UNPKG

cdk-nextjs-standalone

Version:

Deploy a NextJS app to AWS using CDK and OpenNext.

55 lines 7.43 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.NextjsInvalidation = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const aws_cdk_lib_1 = require("aws-cdk-lib"); const aws_iam_1 = require("aws-cdk-lib/aws-iam"); const custom_resources_1 = require("aws-cdk-lib/custom-resources"); const constructs_1 = require("constructs"); class NextjsInvalidation extends constructs_1.Construct { constructor(scope, id, props) { super(scope, id); const awsSdkCall = { // make `physicalResourceId` change each time to invalidate CloudFront // distribution on each change physicalResourceId: custom_resources_1.PhysicalResourceId.of(`${props.distribution.distributionId}-${Date.now()}`), action: 'CreateInvalidationCommand', service: '@aws-sdk/client-cloudfront', parameters: { DistributionId: props.distribution.distributionId, InvalidationBatch: { CallerReference: new Date().toISOString(), Paths: { Quantity: 1, Items: ['/*'], }, }, }, }; const awsCustomResource = new custom_resources_1.AwsCustomResource(this, 'AwsCR', { onCreate: awsSdkCall, onUpdate: awsSdkCall, policy: custom_resources_1.AwsCustomResourcePolicy.fromStatements([ new aws_iam_1.PolicyStatement({ actions: ['cloudfront:CreateInvalidation'], resources: [ aws_cdk_lib_1.Stack.of(this).formatArn({ resource: `distribution/${props.distribution.distributionId}`, service: 'cloudfront', region: '', }), ], }), ]), ...props.overrides?.awsCustomResourceProps, }); for (const dependency of props.dependencies) { dependency.node.addDependency(awsCustomResource); } } } exports.NextjsInvalidation = NextjsInvalidation; _a = JSII_RTTI_SYMBOL_1; NextjsInvalidation[_a] = { fqn: "cdk-nextjs-standalone.NextjsInvalidation", version: "4.2.3" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV4dGpzSW52YWxpZGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL05leHRqc0ludmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUFvQztBQUVwQyxpREFBc0Q7QUFDdEQsbUVBTXNDO0FBQ3RDLDJDQUF1QztBQXVCdkMsTUFBYSxrQkFBbUIsU0FBUSxzQkFBUztJQUMvQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQThCO1FBQ3RFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsTUFBTSxVQUFVLEdBQWU7WUFDN0Isc0VBQXNFO1lBQ3RFLDhCQUE4QjtZQUM5QixrQkFBa0IsRUFBRSxxQ0FBa0IsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUMvRixNQUFNLEVBQUUsMkJBQTJCO1lBQ25DLE9BQU8sRUFBRSw0QkFBNEI7WUFDckMsVUFBVSxFQUFFO2dCQUNWLGNBQWMsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLGNBQWM7Z0JBQ2pELGlCQUFpQixFQUFFO29CQUNqQixlQUFlLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7b0JBQ3pDLEtBQUssRUFBRTt3QkFDTCxRQUFRLEVBQUUsQ0FBQzt3QkFDWCxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUM7cUJBQ2Q7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7UUFDRixNQUFNLGlCQUFpQixHQUFHLElBQUksb0NBQWlCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtZQUM3RCxRQUFRLEVBQUUsVUFBVTtZQUNwQixRQUFRLEVBQUUsVUFBVTtZQUNwQixNQUFNLEVBQUUsMENBQXVCLENBQUMsY0FBYyxDQUFDO2dCQUM3QyxJQUFJLHlCQUFlLENBQUM7b0JBQ2xCLE9BQU8sRUFBRSxDQUFDLCtCQUErQixDQUFDO29CQUMxQyxTQUFTLEVBQUU7d0JBQ1QsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDOzRCQUN2QixRQUFRLEVBQUUsZ0JBQWdCLEtBQUssQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFOzRCQUM3RCxPQUFPLEVBQUUsWUFBWTs0QkFDckIsTUFBTSxFQUFFLEVBQUU7eUJBQ1gsQ0FBQztxQkFDSDtpQkFDRixDQUFDO2FBQ0gsQ0FBQztZQUNGLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxzQkFBc0I7U0FDM0MsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxNQUFNLFVBQVUsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQzs7QUF4Q0gsZ0RBeUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBJRGlzdHJpYnV0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQnO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQge1xuICBBd3NDdXN0b21SZXNvdXJjZSxcbiAgQXdzU2RrQ2FsbCxcbiAgQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3ksXG4gIFBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgQXdzQ3VzdG9tUmVzb3VyY2VQcm9wcyxcbn0gZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNJbnZhbGlkYXRpb25PdmVycmlkZXMge1xuICByZWFkb25seSBhd3NDdXN0b21SZXNvdXJjZVByb3BzPzogQXdzQ3VzdG9tUmVzb3VyY2VQcm9wcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNJbnZhbGlkYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBDbG91ZEZyb250IERpc3RyaWJ1dGlvbiB0byBpbnZhbGlkYXRlXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb246IElEaXN0cmlidXRpb247XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIHRoYXQgc2hvdWxkIGNvbXBsZXRlIGJlZm9yZSBpbnZhbGlkYXRpbmcgQ2xvdWRGcm9udCBEaXN0cmlidXRpb24uXG4gICAqXG4gICAqIFVzZWZ1bCBmb3IgYXNzZXRzIHRoYXQgbXVzdCBiZSBkZXBsb3llZC91cGRhdGVkIGJlZm9yZSBpbnZhbGlkYXRpbmcuXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM6IENvbnN0cnVjdFtdO1xuICAvKipcbiAgICogT3ZlcnJpZGUgcHJvcHMgZm9yIGV2ZXJ5IGNvbnN0cnVjdC5cbiAgICovXG4gIHJlYWRvbmx5IG92ZXJyaWRlcz86IE5leHRqc0ludmFsaWRhdGlvbk92ZXJyaWRlcztcbn1cblxuZXhwb3J0IGNsYXNzIE5leHRqc0ludmFsaWRhdGlvbiBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOZXh0anNJbnZhbGlkYXRpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgY29uc3QgYXdzU2RrQ2FsbDogQXdzU2RrQ2FsbCA9IHtcbiAgICAgIC8vIG1ha2UgYHBoeXNpY2FsUmVzb3VyY2VJZGAgY2hhbmdlIGVhY2ggdGltZSB0byBpbnZhbGlkYXRlIENsb3VkRnJvbnRcbiAgICAgIC8vIGRpc3RyaWJ1dGlvbiBvbiBlYWNoIGNoYW5nZVxuICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBQaHlzaWNhbFJlc291cmNlSWQub2YoYCR7cHJvcHMuZGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbklkfS0ke0RhdGUubm93KCl9YCksXG4gICAgICBhY3Rpb246ICdDcmVhdGVJbnZhbGlkYXRpb25Db21tYW5kJyxcbiAgICAgIHNlcnZpY2U6ICdAYXdzLXNkay9jbGllbnQtY2xvdWRmcm9udCcsXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIERpc3RyaWJ1dGlvbklkOiBwcm9wcy5kaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uSWQsXG4gICAgICAgIEludmFsaWRhdGlvbkJhdGNoOiB7XG4gICAgICAgICAgQ2FsbGVyUmVmZXJlbmNlOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgUGF0aHM6IHtcbiAgICAgICAgICAgIFF1YW50aXR5OiAxLFxuICAgICAgICAgICAgSXRlbXM6IFsnLyonXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IGF3c0N1c3RvbVJlc291cmNlID0gbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsICdBd3NDUicsIHtcbiAgICAgIG9uQ3JlYXRlOiBhd3NTZGtDYWxsLFxuICAgICAgb25VcGRhdGU6IGF3c1Nka0NhbGwsXG4gICAgICBwb2xpY3k6IEF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TdGF0ZW1lbnRzKFtcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogWydjbG91ZGZyb250OkNyZWF0ZUludmFsaWRhdGlvbiddLFxuICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgU3RhY2sub2YodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgICAgICAgICAgcmVzb3VyY2U6IGBkaXN0cmlidXRpb24vJHtwcm9wcy5kaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uSWR9YCxcbiAgICAgICAgICAgICAgc2VydmljZTogJ2Nsb3VkZnJvbnQnLFxuICAgICAgICAgICAgICByZWdpb246ICcnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICBdKSxcbiAgICAgIC4uLnByb3BzLm92ZXJyaWRlcz8uYXdzQ3VzdG9tUmVzb3VyY2VQcm9wcyxcbiAgICB9KTtcbiAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY3kgb2YgcHJvcHMuZGVwZW5kZW5jaWVzKSB7XG4gICAgICBkZXBlbmRlbmN5Lm5vZGUuYWRkRGVwZW5kZW5jeShhd3NDdXN0b21SZXNvdXJjZSk7XG4gICAgfVxuICB9XG59XG4iXX0=