Skip to content
This repository was archived by the owner on Jan 28, 2025. It is now read-only.

Commit 326acc8

Browse files
authored
fix(nextjs-component): fix inability to set custom behavior for _next/data/* (#684)
1 parent 8f4afee commit 326acc8

File tree

1 file changed

+15
-14
lines changed
  • packages/serverless-components/nextjs-component/src

1 file changed

+15
-14
lines changed

packages/serverless-components/nextjs-component/src/component.ts

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ class NextjsComponent extends Component {
7070
stillToMatch.delete(this.pathPattern("api/*", routesManifest));
7171
stillToMatch.delete(this.pathPattern("static/*", routesManifest));
7272
stillToMatch.delete(this.pathPattern("_next/static/*", routesManifest));
73+
stillToMatch.delete(this.pathPattern("_next/data/*", routesManifest));
7374

7475
// check for other api like paths
7576
for (const path of stillToMatch) {
@@ -445,6 +446,19 @@ class NextjsComponent extends Component {
445446

446447
const defaultEdgeLambdaPublishOutputs = await defaultEdgeLambda.publishVersion();
447448

449+
cloudFrontOrigins[0].pathPatterns[
450+
this.pathPattern("_next/data/*", routesManifest)
451+
] = {
452+
minTTL: 0,
453+
defaultTTL: 0,
454+
maxTTL: 31536000,
455+
allowedHttpMethods: ["HEAD", "GET"],
456+
"lambda@edge": {
457+
"origin-response": `${defaultEdgeLambdaOutputs.arn}:${defaultEdgeLambdaPublishOutputs.version}`,
458+
"origin-request": `${defaultEdgeLambdaOutputs.arn}:${defaultEdgeLambdaPublishOutputs.version}`
459+
}
460+
};
461+
448462
// validate that the custom config paths match generated paths in the manifest
449463
this.validatePathPatterns(
450464
Object.keys(cloudFrontOtherInputs),
@@ -453,7 +467,7 @@ class NextjsComponent extends Component {
453467
);
454468

455469
// Add any custom cloudfront configuration
456-
// this includes overrides for _next, static and api
470+
// this includes overrides for _next/data/*, _next/static/*, static/*, api/*, and default cache behaviors
457471
Object.entries(cloudFrontOtherInputs).map(([path, config]) => {
458472
const edgeConfig = {
459473
...(config["lambda@edge"] || {})
@@ -486,19 +500,6 @@ class NextjsComponent extends Component {
486500
};
487501
});
488502

489-
cloudFrontOrigins[0].pathPatterns[
490-
this.pathPattern("_next/data/*", routesManifest)
491-
] = {
492-
minTTL: 0,
493-
defaultTTL: 0,
494-
maxTTL: 31536000,
495-
allowedHttpMethods: ["HEAD", "GET"],
496-
"lambda@edge": {
497-
"origin-response": `${defaultEdgeLambdaOutputs.arn}:${defaultEdgeLambdaPublishOutputs.version}`,
498-
"origin-request": `${defaultEdgeLambdaOutputs.arn}:${defaultEdgeLambdaPublishOutputs.version}`
499-
}
500-
};
501-
502503
// make sure that origin-response is not set.
503504
// this is reserved for serverless-next.js usage
504505
const cloudFrontDefaults = cloudFrontDefaultsInputs || {};

0 commit comments

Comments
 (0)