From 41ec7df76a476f1f1de14f13a03da5e7d9e9be21 Mon Sep 17 00:00:00 2001 From: Alexander Onnikov Date: Fri, 25 Oct 2024 17:56:37 +0700 Subject: [PATCH] UBERF-8387 Adjust S3 client parameters Signed-off-by: Alexander Onnikov --- common/config/rush/pnpm-lock.yaml | 6 +++++- server/s3/package.json | 3 ++- server/s3/src/index.ts | 11 ++++++++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index b24580d62b..4c8623f4f3 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -1100,6 +1100,9 @@ dependencies: '@signpdf/utils': specifier: ^3.2.4 version: 3.2.4 + '@smithy/node-http-handler': + specifier: ^3.0.0 + version: 3.0.0 '@storybook/addon-essentials': specifier: ^7.0.6 version: 7.6.17(react-dom@18.2.0)(react@18.2.0) @@ -32630,7 +32633,7 @@ packages: dev: false file:projects/s3.tgz(esbuild@0.20.1)(ts-node@10.9.2): - resolution: {integrity: sha512-K8tCIa7XhsCfCud4PK5ap0pAoF4fGanurF5AJ7Otx97p6m170W2DJIkiplk2x41Ksy9+Zw9dEF2VWRgdDrWX5A==, tarball: file:projects/s3.tgz} + resolution: {integrity: sha512-9Jp4CG4EJYJsbePGfW/jFKXlhGI6ctSLUm0Wgu2xHck8JzgYCRuRkOjUdeQ0Tgg3njd+/ho+0eL9DmYooYjdrg==, tarball: file:projects/s3.tgz} id: file:projects/s3.tgz name: '@rush-temp/s3' version: 0.0.0 @@ -32638,6 +32641,7 @@ packages: '@aws-sdk/client-s3': 3.577.0 '@aws-sdk/lib-storage': 3.583.0(@aws-sdk/client-s3@3.577.0) '@aws-sdk/s3-request-presigner': 3.582.0 + '@smithy/node-http-handler': 3.0.0 '@types/jest': 29.5.12 '@types/node': 20.11.19 '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) diff --git a/server/s3/package.json b/server/s3/package.json index c0d28dc668..ffd4311d4d 100644 --- a/server/s3/package.json +++ b/server/s3/package.json @@ -40,6 +40,7 @@ "@hcengineering/storage": "^0.6.0", "@aws-sdk/client-s3": "^3.575.0", "@aws-sdk/s3-request-presigner": "^3.582.0", - "@aws-sdk/lib-storage": "^3.583.0" + "@aws-sdk/lib-storage": "^3.583.0", + "@smithy/node-http-handler": "^3.0.0" } } diff --git a/server/s3/src/index.ts b/server/s3/src/index.ts index 56450dd64d..b98545dbbe 100644 --- a/server/s3/src/index.ts +++ b/server/s3/src/index.ts @@ -15,6 +15,9 @@ import { CopyObjectCommand, PutObjectCommand, S3 } from '@aws-sdk/client-s3' import { Upload } from '@aws-sdk/lib-storage' +import { NodeHttpHandler } from '@smithy/node-http-handler' +import { Agent as HttpAgent } from 'http' +import { Agent as HttpsAgent } from 'https' import core, { toWorkspaceString, @@ -70,7 +73,13 @@ export class S3Service implements StorageAdapter { accessKeyId: opt.accessKey, secretAccessKey: opt.secretKey }, - region: opt.region ?? 'auto' + region: opt.region ?? 'auto', + requestHandler: new NodeHttpHandler({ + connectionTimeout: 5000, + socketTimeout: 120000, + httpAgent: new HttpAgent({ maxSockets: 500, keepAlive: true }), + httpsAgent: new HttpsAgent({ maxSockets: 500, keepAlive: true }) + }) }) this.expireTime = parseInt(this.opt.expireTime ?? '168') * 3600 // use 7 * 24 - hours as default value for expireF