cdk-nextjs-standalone
Version:
Deploy a NextJS app to AWS using CDK and OpenNext.
55 lines • 7.43 kB
JavaScript
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=
;