There are many benefits to moving your user data from the Ubuntu file system to AWS S3 cloud storage. It’s also pretty easy to do since Django handles the technical details, and the guys at edX have parameterized everything so that you only need to make some adjustments to the files in /edx/etc/.


If you’re looking for a general overview of how to scale the Open edX platform then you should read this first, “Scaling Open edX“. If you’re planning a completely new Open edX installation in which you are not migrating data and that needs to run at scale, then you might want to take a look at the automated tools included in Cookiecutter Open edX Devops as well as this article on Managing Your Open edX Backend With Terraform. Also, you should note that if you use the Github Actions CI deployment workflow included in the Cookiecutter then it will automatically add this feature to your Open edX installation.

Getting your Open edX platform to save user data to AWS S3 is easier than it might seem. The Open edX functionality for managing AWS S3 storage comes directly from Django and it’s actually quite simple to read and understand: “Amazon S3 — django storages“. Many different kinds of user data get stored, including user profile pics, e-commerce transaction receipts, instructor grade book downloads, and ancillary course  content like pdf documents and video files. Additionally, each of these different kinds of data can be individually configured, if you want. And so using AWS S3 is by no means an all-or-none decision. Furthermore, if you want, you can store different kinds of user data in different S3 buckets.

In the tutorial that follows we’ll setup AWS S3 storage for a hypothetical Open edX installation named We will store all user data in a single AWS S3 bucket of the same name,

All configuration is done to yml files in /edx/etc. The files are read once during platform startup.

I. /edx/etc/lms.yml

1. Basic AWS S3 configuration settings

Create your IAM key/secret here: