There are many benefits to deploying MedusaJS Backend in the cloud, but there are also challenges, particularly with file storage. Using local file storage in the cloud isn't practical because cloud environments are often temporary and don't retain data after reboots or scaling events. Instead, you should use cloud-based storage solutions such as AWS S3. This guide will help you set up AWS S3 for your MedusaJS project.
Solution: Configuring AWS S3 for MedusaJS Backend
If you can't see your images in your MedusaJS storefront, follow this step-by-step guide to configure AWS S3 as your storage solution.
Steps to configure AWS S3
- Install the AWS S3 Storage Plugin : Add the S3 storage plugin to your MedusaJS project.
-
Update Configuration : Modify your
medusa-config.js
to include the S3 storage plugin configuration. -
Set Environment Variables : Ensure you have the following environment variables in your
.env
file. - Restart Your Server : Apply the new configuration by restarting your MedusaJS server.
pnpm add medusa-file-s3
1. Install the AWS S3 Storage Plugin
const plugins = [
// ...
{
resolve: `medusa-file-s3`,
options: {
s3_url: process.env.S3_URL,
bucket: process.env.S3_BUCKET,
region: process.env.S3_REGION,
access_key_id: process.env.S3_ACCESS_KEY_ID,
secret_access_key: process.env.S3_SECRET_ACCESS_KEY,
// optional
cache_control: process.env.S3_CACHE_CONTROL,
download_file_duration:
process.env.S3_DOWNLOAD_FILE_DURATION,
prefix: process.env.S3_PREFIX,
},
},
]
2. Update Configuration
S3_URL=<YOUR_BUCKET_URL>
S3_BUCKET=<YOUR_BUCKET_NAME>
S3_REGION=<YOUR_BUCKET_REGION>
S3_ACCESS_KEY_ID=<YOUR_ACCESS_KEY_ID>
S3_SECRET_ACCESS_KEY=<YOUR_SECRET_ACCESS_KEY>
S3_CACHE_CONTROL=<YOUR_CACHE_CONTROL>
S3_DOWNLOAD_FILE_DURATION=<YOUR_DOWNLOAD_FILE_DURATION_AMOUNT>
S3_PREFIX=<YOUR_BUCKET_PREFIX>
3. Set Environment Variables
npx medusa develop
5. Restart Your Server
Further resources
For more detailed information, see the Medusa Local File Storage Documentation and the AWS S3 Plugin Documentation.
By configuring AWS S3, you can ensure that your images are reliably stored and accessible in a cloud environment, overcoming the limitations of local file storage.