npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

medusa-s3-cloudfront

v1.0.1

Published

AWS S3 file connector for Medusa utilising Cloudfront or Route53

Downloads

7

Readme

medusajs-s3-cloudfront-with-terraform

Medusajs S3 file assets with Cloudfront support and terraform for Infra support

Store uploaded files to your Medusa backend on S3 and use Domain Name or Cloudfront

Plugin Documentation | Medusa Website | Medusa Repository

Features

  • Store product images on S3
  • Support for importing and exporting data through CSV files, such as Products or Prices.
  • Support for Bucket Policies and User Permissions.

Infra

  • Infra repo can be used to apply terraform to create the asset s3 bucket
  • It requires domain to be already present in Route 53 and ACM has a certificate for that domain
  • Also needs a user to be already present in IAM who is going to access from medusa backend server after it is deployed. So create some user like medusa-backend and add the user arn
    • Make sure the user has Access Key and Secret key downloaded so you can use them when configuring Medusa
  • Change variables inside development.tfvars or production.tfvars and run
    • Make sure to fill in state variables if you are using another S3 bucket to store Terraform state

    • Don't confuse the below access key and secret key, they should have devops admin privileges so infra can be provisioned ``` cd infra

          terraform init --backend-config="bucket=${state_bucket}" \
           --backend-config="key=${state_file}" --backend-config="access_key=${access_key}" --backend-config="secret_key=${secret_key}" -backend-config="region=${region}" -reconfigure
      
          terraform plan -var state_bucket="${state_bucket}" \
            -var state_file=${state_file} -var-file=vars/${environment}.tfvars \
            -var access_key=${access_key} -var secret_key=${secret_key}
      
          terraform apply -var state_bucket="${state_bucket}" \
            -var state_file=${state_file} -var-file=vars/${environment}.tfvars \
            -var access_key=${access_key} -var secret_key=${secret_key}
      ```
  • This will create a bucket called assets and serve the contents using cloudfront, pointed to by your domain name

Prerequisites


How to Install

1. Run the following command in the directory of the Medusa backend:

npm install medusa-cloudfront-s3

2. Set the following environment variables in .env:

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_PREFIX=<YOUR_BUCKET_PREFIX> (optional)
S3_CLOUDFRONT_DISTRIBUTION_ID=<YOUR_CLOUDFRONT_DISTRIBUTION_ID> (optional)
S3_DOMAIN_URL=<YOUR_ASSETS_DOMAIN_URL> (optional) // if domain url is present, cloudfront distribution and s3 url is ignored

3. In medusa-config.js add the following at the end of the plugins array:

const plugins = [
  // ...
  {
    resolve: `medusa-cloudfront-s3`,
    options: {
      s3_url: process.env.S3_URL,
      bucket: process.env.S3_BUCKET,
      prefix: process.env.S3_PREFIX, // optional
      region: process.env.S3_REGION,
      access_key_id: process.env.S3_ACCESS_KEY_ID,
      secret_access_key: process.env.S3_SECRET_ACCESS_KEY,
      cloudfront_distribution_id: process.env.S3_CLOUDFRONT_DISTRIBUTION_ID,
      domain_url: process.env.S3_DOMAIN_URL,
      aws_config_object: {},
    },
  },
]

Test the Plugin

1. Run the following command in the directory of the Medusa backend to run the backend:

npm run start

2. Upload an image for a product using the admin dashboard or using the Admin APIs.


Additional Resources