diff --git a/.changeset/lemon-owls-live.md b/.changeset/lemon-owls-live.md new file mode 100644 index 0000000000..64f8b40dfc --- /dev/null +++ b/.changeset/lemon-owls-live.md @@ -0,0 +1,5 @@ +--- +"medusa-file-s3": patch +--- + +Add options for s3 configuration for increased flexibility in configuration diff --git a/docs/content/add-plugins/s3.md b/docs/content/add-plugins/s3.md index d12362a6fa..92bc00aba2 100644 --- a/docs/content/add-plugins/s3.md +++ b/docs/content/add-plugins/s3.md @@ -124,6 +124,33 @@ const plugins = [ ]; ``` +### Add AWS Configurations + +You can pass AWS configurations in the plugin's options under the property `aws_config_object`. This property is an object that accepts [AWS Configurations](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html) as its properties. + +For example, you can pass the `region`, `access_key_id` and `secret_access_key` in `aws_config_object`: + +```jsx title=medusa-config.js +const plugins = [ + //... + { + resolve: `medusa-file-s3`, + options: { + s3_url: process.env.S3_URL, + bucket: process.env.S3_BUCKET, + aws_config_object: { + region: process.env.S3_REGION, + access_key_id: process.env.S3_ACCESS_KEY_ID, + secret_access_key: process.env.S3_SECRET_ACCESS_KEY, + } + }, + }, +]; +``` + +Make sure to define `S3_REGION`, `S3_ACCESS_KEY_ID`, and `S3_SECRET_ACCESS_KEY` in your environment variables first. + + :::caution If you have multiple storage plugins configured, the last plugin declared in the `medusa-config.js` file will be used. diff --git a/packages/medusa-file-s3/README.md b/packages/medusa-file-s3/README.md index 7308e66145..416c362159 100644 --- a/packages/medusa-file-s3/README.md +++ b/packages/medusa-file-s3/README.md @@ -13,5 +13,8 @@ Learn more about how you can use this plugin in the [documentaion](https://docs. region: "eu-west-1" access_key_id: "YOUR-ACCESS-KEY", secret_access_key: "YOUR-SECRET-KEY", + aws_config_object : { + // object for aws config properties + } } ``` diff --git a/packages/medusa-file-s3/src/services/s3.js b/packages/medusa-file-s3/src/services/s3.js index aa492a1553..43d3f62b23 100644 --- a/packages/medusa-file-s3/src/services/s3.js +++ b/packages/medusa-file-s3/src/services/s3.js @@ -14,6 +14,7 @@ class S3Service extends AbstractFileService { this.secretAccessKey_ = options.secret_access_key this.region_ = options.region this.endpoint_ = options.endpoint + this.awsConfigObject_ = options.aws_config_object } upload(file) { @@ -122,16 +123,17 @@ class S3Service extends AbstractFileService { updateAwsConfig(additionalConfiguration = {}) { aws.config.setPromisesDependency(null) - aws.config.update( - { - accessKeyId: this.accessKeyId_, - secretAccessKey: this.secretAccessKey_, - region: this.region_, - endpoint: this.endpoint_, - ...additionalConfiguration, - }, - true - ) + + const config = { + ...additionalConfiguration, + accessKeyId: this.accessKeyId_, + secretAccessKey: this.secretAccessKey_, + region: this.region_, + endpoint: this.endpoint_, + ...this.awsConfigObject_, + } + + aws.config.update(config, true) } }