Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(medusa-file-s3): Allow all AWS options in config #2809

Merged
merged 10 commits into from
Dec 20, 2022
5 changes: 5 additions & 0 deletions .changeset/lemon-owls-live.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"medusa-file-s3": patch
---

Add options for s3 configuration for increased flexibility in configuration
27 changes: 27 additions & 0 deletions docs/content/add-plugins/s3.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
3 changes: 3 additions & 0 deletions packages/medusa-file-s3/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
}
```
22 changes: 12 additions & 10 deletions packages/medusa-file-s3/src/services/s3.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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)
}
}

Expand Down