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" ;
3
3
import { NODE_USE_ARN_REGION_CONFIG_OPTIONS } from "@aws-sdk/middleware-bucket-endpoint" ;
4
+ import { S3ExpressIdentityProviderImpl } from "@aws-sdk/middleware-sdk-s3" ;
4
5
import { SignatureV4MultiRegion } from "@aws-sdk/signature-v4-multi-region" ;
5
6
import { defaultUserAgent } from "@aws-sdk/util-user-agent-node" ;
6
7
import {
@@ -14,16 +15,17 @@ import { Hash } from "@smithy/hash-node";
14
15
import { readableStreamHasher as streamHasher } from "@smithy/hash-stream-node" ;
15
16
import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS , NODE_RETRY_MODE_CONFIG_OPTIONS } from "@smithy/middleware-retry" ;
16
17
import { 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" ;
18
19
import { loadConfigsForDefaultMode } from "@smithy/smithy-client" ;
19
20
import { EndpointV2 } from "@smithy/types" ;
20
21
import { parseUrl } from "@smithy/url-parser" ;
21
22
import { fromBase64 , toBase64 } from "@smithy/util-base64" ;
22
23
import { calculateBodyLength } from "@smithy/util-body-length-node" ;
23
24
import { 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" ;
25
26
import { getAwsChunkedEncodingStream , sdkStreamMixin } from "@smithy/util-stream" ;
26
27
import { fromUtf8 , toUtf8 } from "@smithy/util-utf8" ;
28
+ import https from "https" ;
27
29
28
30
/**
29
31
* Successful compilation indicates the client can be initialized
@@ -33,51 +35,90 @@ export const initializeWithMaximalConfiguration = () => {
33
35
const defaultsMode = resolveDefaultsModeConfig ( { } ) ;
34
36
const defaultConfigProvider = ( ) => defaultsMode ( ) . then ( loadConfigsForDefaultMode ) ;
35
37
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 ( { } ) ,
37
42
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 ) ,
44
61
logger : {
45
62
trace ( ) { } ,
46
63
debug ( ) { } ,
47
64
info ( ) { } ,
48
65
warn ( ) { } ,
49
66
error ( ) { } ,
50
67
} ,
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" ,
51
85
serviceId : "S3" ,
86
+ runtime : "node" ,
87
+ systemClockOffset : 0 ,
52
88
signerConstructor : SignatureV4MultiRegion ,
53
- signingEscapePath : false ,
89
+ endpointProvider : ( ) => null as unknown as EndpointV2 ,
54
90
urlParser : parseUrl ,
55
- runtime : "node" ,
91
+ base64Decoder : fromBase64 ,
92
+ base64Encoder : toBase64 ,
56
93
defaultsMode,
57
94
bodyLengthChecker : calculateBodyLength ,
58
95
credentialDefaultProvider : credentialDefaultProvider ,
59
96
defaultUserAgentProvider : defaultUserAgent ( { serviceId : "S3" , clientVersion : "3.0.0-client-s3-interface-test" } ) ,
60
97
eventStreamSerdeProvider : eventStreamSerdeProvider ,
61
98
getAwsChunkedEncodingStream : getAwsChunkedEncodingStream ,
62
- maxAttempts : loadNodeConfig ( NODE_MAX_ATTEMPT_CONFIG_OPTIONS ) ,
63
99
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
- } ) ,
70
100
sdkStreamMixin : sdkStreamMixin ,
71
101
sha1 : Hash . bind ( null , "sha1" ) ,
72
102
sha256 : Hash . bind ( null , "sha256" ) ,
73
103
streamCollector : streamCollector ,
74
104
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 ) ,
78
105
utf8Decoder : fromUtf8 ,
79
106
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 ) ;
81
122
82
123
return s3 ;
83
124
} ;
0 commit comments