DEV Community

Nomodo.io
Nomodo.io

Posted on • Originally published at blog.nomodo.io on

FAQ: Why can't I use local file storage with Medusa in the cloud? How do I fix it?

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

  1. Install the AWS S3 Storage Plugin : Add the S3 storage plugin to your MedusaJS project.
  2. Update Configuration : Modify your medusa-config.js to include the S3 storage plugin configuration.
  3. Set Environment Variables : Ensure you have the following environment variables in your .env file.
  4. Restart Your Server : Apply the new configuration by restarting your MedusaJS server.
pnpm add medusa-file-s3
Enter fullscreen mode Exit fullscreen mode

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,
    },
  },
]
Enter fullscreen mode Exit fullscreen mode

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>
Enter fullscreen mode Exit fullscreen mode

3. Set Environment Variables

npx medusa develop
Enter fullscreen mode Exit fullscreen mode

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.

Top comments (0)