Use AWS for Data Storage
By default, the Open edX platform uses Amazon S3 (Simple Storage Service) for data storage. If you need to reconfigure an instance of Open edX to use S3, you update the /edx/app/edx_ansible/server-vars.yml
file.
Before proceeding, review the Guidelines for Updating the Open edX Platform.
Preparing to Configure Amazon S3 for Data Storage
Before you change your data storage configuration, be sure to determine the values that apply to your S3 data storage service, including the name of your bucket.
If you want to ensure that the data you store on S3 is secure, and you plan to use signed URLs that are valid for only a short time, be sure to set querystring_auth: true
and default_acl: 'private'
, as shown in the topic that follows. In addition, be sure to verify the following third-party configuration settings.
- Files in S3 should be private.
- The signed URLs should have temporary authentication that allows private files to be accessed.
Use Amazon S3 for Data Storage
To configure S3 data storage, follow these steps.
1. Stop the LMS server.
2. Create or edit the file to define the following settings.
Be sure to replace the example values for the settings that follow with values that apply to your instance.
COMMON_OBJECT_STORE_LOG_SYNC: true
EDXAPP_SETTINGS: "aws"
VHOST_NAME: "aws"
EDXAPP_FILE_UPLOAD_STORAGE_BUCKET_NAME: "bucket_name"
...
EDXAPP_GRADE_STORAGE_CLASS: 'storages.backends.s3boto.S3BotoStorage'
EDXAPP_GRADE_STORAGE_KWARGS:
bucket: 'example-student-grades'
custom_domain: null
locations: '{{ COMMON_ENVIRONMENT }}-{{ COMMON_DEPLOYMENT }}'
querystring_expire: 300
gzip: true
querystring_auth: true
default_acl: 'private'
...
EDXAPP_VERIFY_STUDENT:
DAYS_GOOD_FOR: 365
SOFTWARE_SECURE:
STORAGE_CLASS: "storages.example.s3.S3Storage"
STORAGE_KWARGS:
bucket: "example-certs-test"
custom_domain: null
querystring_expire: 432000
querystring_auth: true
default_acl: 'private'
...
ENABLE_GRADE_DOWNLOADS: true
XQUEUE_SETTINGS: "aws_settings"
XQUEUE_UPLOAD_BUCKET: "xqueue_bucket_name"
XQUEUE_UPLOAD_PATH_PREFIX: "xqueue_path_prefix"
If you were previously using Swift, your /edx/app/edx_ansible/server-vars.yml
file might contain a number of Swift-related variables. (All of these variables have SWIFT
in their name. See Use Swift for Data Storage for details.) They should not interfere with the AWS settings above, so it's not strictly necessary to remove them from /edx/app/edx_ansible/server-vars.yml
before running the commands listed below. But to be on the safe side, it is still recommended to remove them.
3. Run the /edx/bin/update
command.
sudo /edx/bin/update edx-platform <your-branch-name>
sudo /edx/bin/update xqueue <your-branch-name>
4. Restart the LMS server.
5. Repeat this procedure for each instance that has data that you want to store on Amazon S3.