Skip to content

Commit 6e4371e

Browse files
author
awstools
committed
feat(client-s3): Updates internal logic for constructing API endpoints. We have added rule-based endpoints and internal model parameters.
1 parent 40db0f5 commit 6e4371e

File tree

104 files changed

+30681
-2080
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

104 files changed

+30681
-2080
lines changed

clients/client-s3/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
"@aws-sdk/md5-js": "*",
3838
"@aws-sdk/middleware-bucket-endpoint": "*",
3939
"@aws-sdk/middleware-content-length": "*",
40+
"@aws-sdk/middleware-endpoint": "*",
4041
"@aws-sdk/middleware-expect-continue": "*",
4142
"@aws-sdk/middleware-flexible-checksums": "*",
4243
"@aws-sdk/middleware-host-header": "*",

clients/client-s3/src/S3Client.ts

Lines changed: 34 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,12 @@
11
// smithy-typescript generated code
2-
import {
3-
EndpointsInputConfig,
4-
EndpointsResolvedConfig,
5-
RegionInputConfig,
6-
RegionResolvedConfig,
7-
resolveEndpointsConfig,
8-
resolveRegionConfig,
9-
} from "@aws-sdk/config-resolver";
2+
import { RegionInputConfig, RegionResolvedConfig, resolveRegionConfig } from "@aws-sdk/config-resolver";
103
import {
114
EventStreamSerdeInputConfig,
125
EventStreamSerdeResolvedConfig,
136
resolveEventStreamSerdeConfig,
147
} from "@aws-sdk/eventstream-serde-config-resolver";
15-
import {
16-
BucketEndpointInputConfig,
17-
BucketEndpointResolvedConfig,
18-
resolveBucketEndpointConfig,
19-
} from "@aws-sdk/middleware-bucket-endpoint";
208
import { getContentLengthPlugin } from "@aws-sdk/middleware-content-length";
9+
import { EndpointInputConfig, EndpointResolvedConfig, resolveEndpointConfig } from "@aws-sdk/middleware-endpoint";
2110
import { getAddExpectContinuePlugin } from "@aws-sdk/middleware-expect-continue";
2211
import {
2312
getHostHeaderPlugin,
@@ -28,7 +17,12 @@ import {
2817
import { getLoggerPlugin } from "@aws-sdk/middleware-logger";
2918
import { getRecursionDetectionPlugin } from "@aws-sdk/middleware-recursion-detection";
3019
import { getRetryPlugin, resolveRetryConfig, RetryInputConfig, RetryResolvedConfig } from "@aws-sdk/middleware-retry";
31-
import { getValidateBucketNamePlugin } from "@aws-sdk/middleware-sdk-s3";
20+
import {
21+
getValidateBucketNamePlugin,
22+
resolveS3Config,
23+
S3InputConfig,
24+
S3ResolvedConfig,
25+
} from "@aws-sdk/middleware-sdk-s3";
3226
import {
3327
AwsAuthInputConfig,
3428
AwsAuthResolvedConfig,
@@ -53,6 +47,7 @@ import {
5347
Credentials as __Credentials,
5448
Decoder as __Decoder,
5549
Encoder as __Encoder,
50+
EndpointV2 as __EndpointV2,
5651
EventStreamSerdeProvider as __EventStreamSerdeProvider,
5752
GetAwsChunkedEncodingStream,
5853
Hash as __Hash,
@@ -61,7 +56,6 @@ import {
6156
Logger as __Logger,
6257
Provider as __Provider,
6358
Provider,
64-
RegionInfoProvider,
6559
SdkStreamMixinInjector as __SdkStreamMixinInjector,
6660
StreamCollector as __StreamCollector,
6761
StreamHasher as __StreamHasher,
@@ -319,6 +313,12 @@ import {
319313
WriteGetObjectResponseCommandInput,
320314
WriteGetObjectResponseCommandOutput,
321315
} from "./commands/WriteGetObjectResponseCommand";
316+
import {
317+
ClientInputEndpointParameters,
318+
ClientResolvedEndpointParameters,
319+
EndpointParameters,
320+
resolveClientEndpointParameters,
321+
} from "./endpoint/EndpointParameters";
322322
import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig";
323323

324324
export type ServiceInputTypes =
@@ -620,12 +620,6 @@ export interface ClientDefaults extends Partial<__SmithyResolvedConfiguration<__
620620
*/
621621
credentialDefaultProvider?: (input: any) => __Provider<__Credentials>;
622622

623-
/**
624-
* Fetch related hostname, signing name or signing region with given region.
625-
* @internal
626-
*/
627-
regionInfoProvider?: RegionInfoProvider;
628-
629623
/**
630624
* Whether to escape request path when signing the request.
631625
*/
@@ -688,13 +682,14 @@ export interface ClientDefaults extends Partial<__SmithyResolvedConfiguration<__
688682
type S3ClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptions>> &
689683
ClientDefaults &
690684
RegionInputConfig &
691-
EndpointsInputConfig &
685+
EndpointInputConfig<EndpointParameters> &
692686
RetryInputConfig &
693687
HostHeaderInputConfig &
694688
AwsAuthInputConfig &
695-
BucketEndpointInputConfig &
689+
S3InputConfig &
696690
UserAgentInputConfig &
697-
EventStreamSerdeInputConfig;
691+
EventStreamSerdeInputConfig &
692+
ClientInputEndpointParameters;
698693
/**
699694
* The configuration interface of S3Client class constructor that set the region, credentials and other options.
700695
*/
@@ -703,13 +698,14 @@ export interface S3ClientConfig extends S3ClientConfigType {}
703698
type S3ClientResolvedConfigType = __SmithyResolvedConfiguration<__HttpHandlerOptions> &
704699
Required<ClientDefaults> &
705700
RegionResolvedConfig &
706-
EndpointsResolvedConfig &
701+
EndpointResolvedConfig<EndpointParameters> &
707702
RetryResolvedConfig &
708703
HostHeaderResolvedConfig &
709704
AwsAuthResolvedConfig &
710-
BucketEndpointResolvedConfig &
705+
S3ResolvedConfig &
711706
UserAgentResolvedConfig &
712-
EventStreamSerdeResolvedConfig;
707+
EventStreamSerdeResolvedConfig &
708+
ClientResolvedEndpointParameters;
713709
/**
714710
* The resolved configuration interface of S3Client class. This is resolved and normalized from the {@link S3ClientConfig | constructor configuration interface}.
715711
*/
@@ -731,16 +727,17 @@ export class S3Client extends __Client<
731727

732728
constructor(configuration: S3ClientConfig) {
733729
const _config_0 = __getRuntimeConfig(configuration);
734-
const _config_1 = resolveRegionConfig(_config_0);
735-
const _config_2 = resolveEndpointsConfig(_config_1);
736-
const _config_3 = resolveRetryConfig(_config_2);
737-
const _config_4 = resolveHostHeaderConfig(_config_3);
738-
const _config_5 = resolveAwsAuthConfig(_config_4);
739-
const _config_6 = resolveBucketEndpointConfig(_config_5);
740-
const _config_7 = resolveUserAgentConfig(_config_6);
741-
const _config_8 = resolveEventStreamSerdeConfig(_config_7);
742-
super(_config_8);
743-
this.config = _config_8;
730+
const _config_1 = resolveClientEndpointParameters(_config_0);
731+
const _config_2 = resolveRegionConfig(_config_1);
732+
const _config_3 = resolveEndpointConfig(_config_2);
733+
const _config_4 = resolveRetryConfig(_config_3);
734+
const _config_5 = resolveHostHeaderConfig(_config_4);
735+
const _config_6 = resolveAwsAuthConfig(_config_5);
736+
const _config_7 = resolveS3Config(_config_6);
737+
const _config_8 = resolveUserAgentConfig(_config_7);
738+
const _config_9 = resolveEventStreamSerdeConfig(_config_8);
739+
super(_config_9);
740+
this.config = _config_9;
744741
this.middlewareStack.use(getRetryPlugin(this.config));
745742
this.middlewareStack.use(getContentLengthPlugin(this.config));
746743
this.middlewareStack.use(getHostHeaderPlugin(this.config));

clients/client-s3/src/commands/AbortMultipartUploadCommand.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// smithy-typescript generated code
2-
import { getBucketEndpointPlugin } from "@aws-sdk/middleware-bucket-endpoint";
2+
import { EndpointParameterInstructions, getEndpointPlugin } from "@aws-sdk/middleware-endpoint";
33
import { getSerdePlugin } from "@aws-sdk/middleware-serde";
44
import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http";
55
import { Command as $Command } from "@aws-sdk/smithy-client";
@@ -91,6 +91,21 @@ export class AbortMultipartUploadCommand extends $Command<
9191
// Start section: command_properties
9292
// End section: command_properties
9393

94+
public static getEndpointParameterInstructions(): EndpointParameterInstructions {
95+
return {
96+
Bucket: { type: "contextParams", name: "Bucket" },
97+
ForcePathStyle: { type: "clientContextParams", name: "forcePathStyle" },
98+
UseArnRegion: { type: "clientContextParams", name: "useArnRegion" },
99+
DisableMultiRegionAccessPoints: { type: "clientContextParams", name: "disableMultiregionAccessPoints" },
100+
Accelerate: { type: "clientContextParams", name: "useAccelerateEndpoint" },
101+
UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" },
102+
UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" },
103+
Endpoint: { type: "builtInParams", name: "endpoint" },
104+
Region: { type: "builtInParams", name: "region" },
105+
UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" },
106+
};
107+
}
108+
94109
constructor(readonly input: AbortMultipartUploadCommandInput) {
95110
// Start section: command_constructor
96111
super();
@@ -106,7 +121,9 @@ export class AbortMultipartUploadCommand extends $Command<
106121
options?: __HttpHandlerOptions
107122
): Handler<AbortMultipartUploadCommandInput, AbortMultipartUploadCommandOutput> {
108123
this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));
109-
this.middlewareStack.use(getBucketEndpointPlugin(configuration));
124+
this.middlewareStack.use(
125+
getEndpointPlugin(configuration, AbortMultipartUploadCommand.getEndpointParameterInstructions())
126+
);
110127

111128
const stack = clientStack.concat(this.middlewareStack);
112129

clients/client-s3/src/commands/CompleteMultipartUploadCommand.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// smithy-typescript generated code
2-
import { getBucketEndpointPlugin } from "@aws-sdk/middleware-bucket-endpoint";
2+
import { EndpointParameterInstructions, getEndpointPlugin } from "@aws-sdk/middleware-endpoint";
33
import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3";
44
import { getSerdePlugin } from "@aws-sdk/middleware-serde";
55
import { getSsecPlugin } from "@aws-sdk/middleware-ssec";
@@ -168,6 +168,21 @@ export class CompleteMultipartUploadCommand extends $Command<
168168
// Start section: command_properties
169169
// End section: command_properties
170170

171+
public static getEndpointParameterInstructions(): EndpointParameterInstructions {
172+
return {
173+
Bucket: { type: "contextParams", name: "Bucket" },
174+
ForcePathStyle: { type: "clientContextParams", name: "forcePathStyle" },
175+
UseArnRegion: { type: "clientContextParams", name: "useArnRegion" },
176+
DisableMultiRegionAccessPoints: { type: "clientContextParams", name: "disableMultiregionAccessPoints" },
177+
Accelerate: { type: "clientContextParams", name: "useAccelerateEndpoint" },
178+
UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" },
179+
UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" },
180+
Endpoint: { type: "builtInParams", name: "endpoint" },
181+
Region: { type: "builtInParams", name: "region" },
182+
UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" },
183+
};
184+
}
185+
171186
constructor(readonly input: CompleteMultipartUploadCommandInput) {
172187
// Start section: command_constructor
173188
super();
@@ -183,9 +198,11 @@ export class CompleteMultipartUploadCommand extends $Command<
183198
options?: __HttpHandlerOptions
184199
): Handler<CompleteMultipartUploadCommandInput, CompleteMultipartUploadCommandOutput> {
185200
this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));
201+
this.middlewareStack.use(
202+
getEndpointPlugin(configuration, CompleteMultipartUploadCommand.getEndpointParameterInstructions())
203+
);
186204
this.middlewareStack.use(getThrow200ExceptionsPlugin(configuration));
187205
this.middlewareStack.use(getSsecPlugin(configuration));
188-
this.middlewareStack.use(getBucketEndpointPlugin(configuration));
189206

190207
const stack = clientStack.concat(this.middlewareStack);
191208

clients/client-s3/src/commands/CopyObjectCommand.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// smithy-typescript generated code
2-
import { getBucketEndpointPlugin } from "@aws-sdk/middleware-bucket-endpoint";
2+
import { EndpointParameterInstructions, getEndpointPlugin } from "@aws-sdk/middleware-endpoint";
33
import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3";
44
import { getSerdePlugin } from "@aws-sdk/middleware-serde";
55
import { getSsecPlugin } from "@aws-sdk/middleware-ssec";
@@ -240,6 +240,21 @@ export class CopyObjectCommand extends $Command<
240240
// Start section: command_properties
241241
// End section: command_properties
242242

243+
public static getEndpointParameterInstructions(): EndpointParameterInstructions {
244+
return {
245+
Bucket: { type: "contextParams", name: "Bucket" },
246+
ForcePathStyle: { type: "clientContextParams", name: "forcePathStyle" },
247+
UseArnRegion: { type: "clientContextParams", name: "useArnRegion" },
248+
DisableMultiRegionAccessPoints: { type: "clientContextParams", name: "disableMultiregionAccessPoints" },
249+
Accelerate: { type: "clientContextParams", name: "useAccelerateEndpoint" },
250+
UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" },
251+
UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" },
252+
Endpoint: { type: "builtInParams", name: "endpoint" },
253+
Region: { type: "builtInParams", name: "region" },
254+
UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" },
255+
};
256+
}
257+
243258
constructor(readonly input: CopyObjectCommandInput) {
244259
// Start section: command_constructor
245260
super();
@@ -255,9 +270,9 @@ export class CopyObjectCommand extends $Command<
255270
options?: __HttpHandlerOptions
256271
): Handler<CopyObjectCommandInput, CopyObjectCommandOutput> {
257272
this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));
273+
this.middlewareStack.use(getEndpointPlugin(configuration, CopyObjectCommand.getEndpointParameterInstructions()));
258274
this.middlewareStack.use(getThrow200ExceptionsPlugin(configuration));
259275
this.middlewareStack.use(getSsecPlugin(configuration));
260-
this.middlewareStack.use(getBucketEndpointPlugin(configuration));
261276

262277
const stack = clientStack.concat(this.middlewareStack);
263278

clients/client-s3/src/commands/CreateBucketCommand.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// smithy-typescript generated code
2+
import { EndpointParameterInstructions, getEndpointPlugin } from "@aws-sdk/middleware-endpoint";
23
import { getLocationConstraintPlugin } from "@aws-sdk/middleware-location-constraint";
34
import { getSerdePlugin } from "@aws-sdk/middleware-serde";
45
import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http";
@@ -199,6 +200,21 @@ export class CreateBucketCommand extends $Command<
199200
// Start section: command_properties
200201
// End section: command_properties
201202

203+
public static getEndpointParameterInstructions(): EndpointParameterInstructions {
204+
return {
205+
Bucket: { type: "contextParams", name: "Bucket" },
206+
ForcePathStyle: { type: "clientContextParams", name: "forcePathStyle" },
207+
UseArnRegion: { type: "clientContextParams", name: "useArnRegion" },
208+
DisableMultiRegionAccessPoints: { type: "clientContextParams", name: "disableMultiregionAccessPoints" },
209+
Accelerate: { type: "clientContextParams", name: "useAccelerateEndpoint" },
210+
UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" },
211+
UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" },
212+
Endpoint: { type: "builtInParams", name: "endpoint" },
213+
Region: { type: "builtInParams", name: "region" },
214+
UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" },
215+
};
216+
}
217+
202218
constructor(readonly input: CreateBucketCommandInput) {
203219
// Start section: command_constructor
204220
super();
@@ -214,6 +230,7 @@ export class CreateBucketCommand extends $Command<
214230
options?: __HttpHandlerOptions
215231
): Handler<CreateBucketCommandInput, CreateBucketCommandOutput> {
216232
this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));
233+
this.middlewareStack.use(getEndpointPlugin(configuration, CreateBucketCommand.getEndpointParameterInstructions()));
217234
this.middlewareStack.use(getLocationConstraintPlugin(configuration));
218235

219236
const stack = clientStack.concat(this.middlewareStack);

clients/client-s3/src/commands/CreateMultipartUploadCommand.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// smithy-typescript generated code
2-
import { getBucketEndpointPlugin } from "@aws-sdk/middleware-bucket-endpoint";
2+
import { EndpointParameterInstructions, getEndpointPlugin } from "@aws-sdk/middleware-endpoint";
33
import { getSerdePlugin } from "@aws-sdk/middleware-serde";
44
import { getSsecPlugin } from "@aws-sdk/middleware-ssec";
55
import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http";
@@ -333,6 +333,21 @@ export class CreateMultipartUploadCommand extends $Command<
333333
// Start section: command_properties
334334
// End section: command_properties
335335

336+
public static getEndpointParameterInstructions(): EndpointParameterInstructions {
337+
return {
338+
Bucket: { type: "contextParams", name: "Bucket" },
339+
ForcePathStyle: { type: "clientContextParams", name: "forcePathStyle" },
340+
UseArnRegion: { type: "clientContextParams", name: "useArnRegion" },
341+
DisableMultiRegionAccessPoints: { type: "clientContextParams", name: "disableMultiregionAccessPoints" },
342+
Accelerate: { type: "clientContextParams", name: "useAccelerateEndpoint" },
343+
UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" },
344+
UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" },
345+
Endpoint: { type: "builtInParams", name: "endpoint" },
346+
Region: { type: "builtInParams", name: "region" },
347+
UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" },
348+
};
349+
}
350+
336351
constructor(readonly input: CreateMultipartUploadCommandInput) {
337352
// Start section: command_constructor
338353
super();
@@ -348,8 +363,10 @@ export class CreateMultipartUploadCommand extends $Command<
348363
options?: __HttpHandlerOptions
349364
): Handler<CreateMultipartUploadCommandInput, CreateMultipartUploadCommandOutput> {
350365
this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));
366+
this.middlewareStack.use(
367+
getEndpointPlugin(configuration, CreateMultipartUploadCommand.getEndpointParameterInstructions())
368+
);
351369
this.middlewareStack.use(getSsecPlugin(configuration));
352-
this.middlewareStack.use(getBucketEndpointPlugin(configuration));
353370

354371
const stack = clientStack.concat(this.middlewareStack);
355372

clients/client-s3/src/commands/DeleteBucketAnalyticsConfigurationCommand.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// smithy-typescript generated code
2-
import { getBucketEndpointPlugin } from "@aws-sdk/middleware-bucket-endpoint";
2+
import { EndpointParameterInstructions, getEndpointPlugin } from "@aws-sdk/middleware-endpoint";
33
import { getSerdePlugin } from "@aws-sdk/middleware-serde";
44
import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http";
55
import { Command as $Command } from "@aws-sdk/smithy-client";
@@ -80,6 +80,21 @@ export class DeleteBucketAnalyticsConfigurationCommand extends $Command<
8080
// Start section: command_properties
8181
// End section: command_properties
8282

83+
public static getEndpointParameterInstructions(): EndpointParameterInstructions {
84+
return {
85+
Bucket: { type: "contextParams", name: "Bucket" },
86+
ForcePathStyle: { type: "clientContextParams", name: "forcePathStyle" },
87+
UseArnRegion: { type: "clientContextParams", name: "useArnRegion" },
88+
DisableMultiRegionAccessPoints: { type: "clientContextParams", name: "disableMultiregionAccessPoints" },
89+
Accelerate: { type: "clientContextParams", name: "useAccelerateEndpoint" },
90+
UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" },
91+
UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" },
92+
Endpoint: { type: "builtInParams", name: "endpoint" },
93+
Region: { type: "builtInParams", name: "region" },
94+
UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" },
95+
};
96+
}
97+
8398
constructor(readonly input: DeleteBucketAnalyticsConfigurationCommandInput) {
8499
// Start section: command_constructor
85100
super();
@@ -95,7 +110,9 @@ export class DeleteBucketAnalyticsConfigurationCommand extends $Command<
95110
options?: __HttpHandlerOptions
96111
): Handler<DeleteBucketAnalyticsConfigurationCommandInput, DeleteBucketAnalyticsConfigurationCommandOutput> {
97112
this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));
98-
this.middlewareStack.use(getBucketEndpointPlugin(configuration));
113+
this.middlewareStack.use(
114+
getEndpointPlugin(configuration, DeleteBucketAnalyticsConfigurationCommand.getEndpointParameterInstructions())
115+
);
99116

100117
const stack = clientStack.concat(this.middlewareStack);
101118

0 commit comments

Comments
 (0)