1- import { S3Client } from "@aws-sdk/client-s3" ;
2- import { defaultProvider as credentialDefaultProvider } from "@aws-sdk/credential-provider-node" ;
1+ import { S3Client , S3ClientConfigType } from "@aws-sdk/client-s3" ;
2+ import { defaultProvider as credentialDefaultProvider , defaultProvider } from "@aws-sdk/credential-provider-node" ;
33import { NODE_USE_ARN_REGION_CONFIG_OPTIONS } from "@aws-sdk/middleware-bucket-endpoint" ;
4+ import { S3ExpressIdentityProviderImpl } from "@aws-sdk/middleware-sdk-s3" ;
45import { SignatureV4MultiRegion } from "@aws-sdk/signature-v4-multi-region" ;
56import { defaultUserAgent } from "@aws-sdk/util-user-agent-node" ;
67import {
@@ -14,16 +15,17 @@ import { Hash } from "@smithy/hash-node";
1415import { readableStreamHasher as streamHasher } from "@smithy/hash-stream-node" ;
1516import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS , NODE_RETRY_MODE_CONFIG_OPTIONS } from "@smithy/middleware-retry" ;
1617import { loadConfig as loadNodeConfig } from "@smithy/node-config-provider" ;
17- import { NodeHttpHandler as RequestHandler , streamCollector } from "@smithy/node-http-handler" ;
18+ import { NodeHttpHandler , streamCollector } from "@smithy/node-http-handler" ;
1819import { loadConfigsForDefaultMode } from "@smithy/smithy-client" ;
1920import { EndpointV2 } from "@smithy/types" ;
2021import { parseUrl } from "@smithy/url-parser" ;
2122import { fromBase64 , toBase64 } from "@smithy/util-base64" ;
2223import { calculateBodyLength } from "@smithy/util-body-length-node" ;
2324import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node" ;
24- import { DEFAULT_RETRY_MODE } from "@smithy/util-retry" ;
25+ import { ConfiguredRetryStrategy , DEFAULT_RETRY_MODE , StandardRetryStrategy } from "@smithy/util-retry" ;
2526import { getAwsChunkedEncodingStream , sdkStreamMixin } from "@smithy/util-stream" ;
2627import { fromUtf8 , toUtf8 } from "@smithy/util-utf8" ;
28+ import https from "https" ;
2729
2830/**
2931 * Successful compilation indicates the client can be initialized
@@ -33,51 +35,90 @@ export const initializeWithMaximalConfiguration = () => {
3335 const defaultsMode = resolveDefaultsModeConfig ( { } ) ;
3436 const defaultConfigProvider = ( ) => defaultsMode ( ) . then ( loadConfigsForDefaultMode ) ;
3537
36- const s3 = new S3Client ( {
38+ const config : Required < S3ClientConfigType > = {
39+ // BEGIN user options
40+ region : loadNodeConfig ( NODE_REGION_CONFIG_OPTIONS , NODE_REGION_CONFIG_FILE_OPTIONS ) ,
41+ credentials : defaultProvider ( { } ) ,
3742 endpoint : "endpoint" ,
38- customUserAgent : "aws-client-api-test-user-agent" ,
39- apiVersion : "2006-03-01" ,
40- base64Decoder : fromBase64 ,
41- base64Encoder : toBase64 ,
42- disableHostPrefix : false ,
43- endpointProvider : ( ) => null as unknown as EndpointV2 ,
43+ requestHandler : new NodeHttpHandler ( {
44+ httpsAgent : new https . Agent ( {
45+ maxSockets : 200 ,
46+ keepAlive : true ,
47+ } ) ,
48+ requestTimeout : 15000 ,
49+ connectionTimeout : 6000 ,
50+ } ) ,
51+ retryStrategy :
52+ new StandardRetryStrategy ( 3 ) ||
53+ new ConfiguredRetryStrategy ( 3 , ( attempt ) => {
54+ return attempt * 1_000 ;
55+ } ) ,
56+ retryMode : loadNodeConfig ( {
57+ ...NODE_RETRY_MODE_CONFIG_OPTIONS ,
58+ default : async ( ) => ( await defaultConfigProvider ( ) ) . retryMode || DEFAULT_RETRY_MODE ,
59+ } ) ,
60+ maxAttempts : loadNodeConfig ( NODE_MAX_ATTEMPT_CONFIG_OPTIONS ) ,
4461 logger : {
4562 trace ( ) { } ,
4663 debug ( ) { } ,
4764 info ( ) { } ,
4865 warn ( ) { } ,
4966 error ( ) { } ,
5067 } ,
68+ signer : new SignatureV4MultiRegion ( {
69+ service : "s3" ,
70+ region : "us-west-2" ,
71+ credentials : defaultProvider ( { } ) ,
72+ sha256 : Hash . bind ( null , "sha256" ) ,
73+ } ) ,
74+ useDualstackEndpoint : loadNodeConfig ( NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS ) ,
75+ useFipsEndpoint : loadNodeConfig ( NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS ) ,
76+ customUserAgent : "aws-client-api-test-user-agent" ,
77+ extensions : [ ] ,
78+ tls : true ,
79+ disableHostPrefix : false ,
80+ signingRegion : "us-west-2" ,
81+ // END user options
82+
83+ // BEGIN internal options
84+ apiVersion : "2006-03-01" ,
5185 serviceId : "S3" ,
86+ runtime : "node" ,
87+ systemClockOffset : 0 ,
5288 signerConstructor : SignatureV4MultiRegion ,
53- signingEscapePath : false ,
89+ endpointProvider : ( ) => null as unknown as EndpointV2 ,
5490 urlParser : parseUrl ,
55- runtime : "node" ,
91+ base64Decoder : fromBase64 ,
92+ base64Encoder : toBase64 ,
5693 defaultsMode,
5794 bodyLengthChecker : calculateBodyLength ,
5895 credentialDefaultProvider : credentialDefaultProvider ,
5996 defaultUserAgentProvider : defaultUserAgent ( { serviceId : "S3" , clientVersion : "3.0.0-client-s3-interface-test" } ) ,
6097 eventStreamSerdeProvider : eventStreamSerdeProvider ,
6198 getAwsChunkedEncodingStream : getAwsChunkedEncodingStream ,
62- maxAttempts : loadNodeConfig ( NODE_MAX_ATTEMPT_CONFIG_OPTIONS ) ,
6399 md5 : Hash . bind ( null , "md5" ) ,
64- region : loadNodeConfig ( NODE_REGION_CONFIG_OPTIONS , NODE_REGION_CONFIG_FILE_OPTIONS ) ,
65- requestHandler : new RequestHandler ( defaultConfigProvider ) ,
66- retryMode : loadNodeConfig ( {
67- ...NODE_RETRY_MODE_CONFIG_OPTIONS ,
68- default : async ( ) => ( await defaultConfigProvider ( ) ) . retryMode || DEFAULT_RETRY_MODE ,
69- } ) ,
70100 sdkStreamMixin : sdkStreamMixin ,
71101 sha1 : Hash . bind ( null , "sha1" ) ,
72102 sha256 : Hash . bind ( null , "sha256" ) ,
73103 streamCollector : streamCollector ,
74104 streamHasher : streamHasher ,
75- useArnRegion : loadNodeConfig ( NODE_USE_ARN_REGION_CONFIG_OPTIONS ) ,
76- useDualstackEndpoint : loadNodeConfig ( NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS ) ,
77- useFipsEndpoint : loadNodeConfig ( NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS ) ,
78105 utf8Decoder : fromUtf8 ,
79106 utf8Encoder : toUtf8 ,
80- } ) ;
107+ // END internal options
108+
109+ // S3 specific options below
110+ useAccelerateEndpoint : false ,
111+ useArnRegion : loadNodeConfig ( NODE_USE_ARN_REGION_CONFIG_OPTIONS ) ,
112+ forcePathStyle : false ,
113+ disableMultiregionAccessPoints : false ,
114+ followRegionRedirects : false ,
115+ s3ExpressIdentityProvider : new S3ExpressIdentityProviderImpl ( "createSessionFn" as any ) ,
116+ disableS3ExpressSessionAuth : false ,
117+ useGlobalEndpoint : false ,
118+ signingEscapePath : false ,
119+ } ;
120+
121+ const s3 = new S3Client ( config ) ;
81122
82123 return s3 ;
83124} ;
0 commit comments