Implementing Rollback in SSG with Cloudfront

Since entire site is pre-rendered, difference in layout between mobile/desktop causes higher CLS.

Implementing Rollback in SSG with Cloudfront
Rollback using buildNumber
Table of Contents

The Problem

SSG Generates all the pages at build time, and hence with increasing pages, the build time increases. During an incident, re-generating the entire site after a fix will take time. Since the SSG has all the static content already, rollbacking to a previous build is often better while you resolve the incident.

Solution

Keep the previous builds

In your S3 bucket, while pushing the changes for a new build, instead of replacing the old files, we can just push into a new directory with buildNumber.

Configure a custom origin header in CF

Add a header in CDN’s origin configuration. This is always udpated with the new release post syncing all the files to S3

Use lambda@edge to add prefix in request URI

The lambda@edge will receive this buildNumber header, which it can use to prefix the request URI and hence serving the right file