From 13c200ad2f394734a126ea8920840a70e61401f7 Mon Sep 17 00:00:00 2001 From: Pevey <7490308+pevey@users.noreply.github.com> Date: Sun, 19 Feb 2023 12:17:35 -0600 Subject: [PATCH] feat(medusa-file-s3): S3 file service reusing a single AWS client (#3260) --- .changeset/early-ducks-press.md | 5 +++++ packages/medusa-file-s3/src/services/s3.js | 19 +++++++------------ 2 files changed, 12 insertions(+), 12 deletions(-) create mode 100644 .changeset/early-ducks-press.md diff --git a/.changeset/early-ducks-press.md b/.changeset/early-ducks-press.md new file mode 100644 index 0000000000..59a2c8357f --- /dev/null +++ b/.changeset/early-ducks-press.md @@ -0,0 +1,5 @@ +--- +"medusa-file-s3": patch +--- + +fix(medusa-file-s3): update s3 file service to reuse one s3 client diff --git a/packages/medusa-file-s3/src/services/s3.js b/packages/medusa-file-s3/src/services/s3.js index 43d3f62b23..55960ad5cb 100644 --- a/packages/medusa-file-s3/src/services/s3.js +++ b/packages/medusa-file-s3/src/services/s3.js @@ -15,6 +15,8 @@ class S3Service extends AbstractFileService { this.region_ = options.region this.endpoint_ = options.endpoint this.awsConfigObject_ = options.aws_config_object + + this.client_ = new aws.S3() } upload(file) { @@ -30,7 +32,6 @@ class S3Service extends AbstractFileService { } uploadFile(file, options = { isProtected: false, acl: undefined }) { - const s3 = new aws.S3() const params = { ACL: options.acl ?? (options.isProtected ? "private" : "public-read"), Bucket: this.bucket_, @@ -39,7 +40,7 @@ class S3Service extends AbstractFileService { } return new Promise((resolve, reject) => { - s3.upload(params, (err, data) => { + this.client_.upload(params, (err, data) => { if (err) { reject(err) return @@ -53,14 +54,13 @@ class S3Service extends AbstractFileService { async delete(file) { this.updateAwsConfig() - const s3 = new aws.S3() const params = { Bucket: this.bucket_, Key: `${file}`, } return new Promise((resolve, reject) => { - s3.deleteObject(params, (err, data) => { + this.client_.deleteObject(params, (err, data) => { if (err) { reject(err) return @@ -83,10 +83,9 @@ class S3Service extends AbstractFileService { Key: fileKey, } - const s3 = new aws.S3() return { writeStream: pass, - promise: s3.upload(params).promise(), + promise: this.client_.upload(params).promise(), url: `${this.s3Url_}/${fileKey}`, fileKey, } @@ -95,14 +94,12 @@ class S3Service extends AbstractFileService { async getDownloadStream(fileData) { this.updateAwsConfig() - const s3 = new aws.S3() - const params = { Bucket: this.bucket_, Key: `${fileData.fileKey}`, } - return s3.getObject(params).createReadStream() + return this.client_.getObject(params).createReadStream() } async getPresignedDownloadUrl(fileData) { @@ -110,15 +107,13 @@ class S3Service extends AbstractFileService { signatureVersion: "v4", }) - const s3 = new aws.S3() - const params = { Bucket: this.bucket_, Key: `${fileData.fileKey}`, Expires: this.downloadUrlDuration, } - return await s3.getSignedUrlPromise("getObject", params) + return await this.client_.getSignedUrlPromise("getObject", params) } updateAwsConfig(additionalConfiguration = {}) {