Skip to content

Commit 5ce5600

Browse files
authored
chore: statically import credential-provider-node in clients used from credentials (#6027)
1 parent 0d54a05 commit 5ce5600

File tree

21 files changed

+46
-155
lines changed

21 files changed

+46
-155
lines changed

clients/client-sso-oidc/package.json

+1-3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
"@aws-crypto/sha256-browser": "3.0.0",
2222
"@aws-crypto/sha256-js": "3.0.0",
2323
"@aws-sdk/core": "*",
24+
"@aws-sdk/credential-provider-node": "*",
2425
"@aws-sdk/middleware-host-header": "*",
2526
"@aws-sdk/middleware-logger": "*",
2627
"@aws-sdk/middleware-recursion-detection": "*",
@@ -84,9 +85,6 @@
8485
"url": "https://aws.amazon.com/javascript/"
8586
},
8687
"license": "Apache-2.0",
87-
"peerDependencies": {
88-
"@aws-sdk/credential-provider-node": "*"
89-
},
9088
"browser": {
9189
"./dist-es/runtimeConfig": "./dist-es/runtimeConfig.browser"
9290
},

clients/client-sso-oidc/src/credentialDefaultProvider.ts

-8
This file was deleted.

clients/client-sso-oidc/src/runtimeConfig.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
// @ts-ignore: package.json will be imported from dist folders
33
import packageInfo from "../package.json"; // eslint-disable-line
44

5-
import { defaultProvider as credentialDefaultProvider } from "./credentialDefaultProvider";
65
import { emitWarningIfUnsupportedVersion as awsCheckVersion } from "@aws-sdk/core";
6+
import { defaultProvider as credentialDefaultProvider } from "@aws-sdk/credential-provider-node";
77
import { defaultUserAgent } from "@aws-sdk/util-user-agent-node";
88
import {
99
NODE_REGION_CONFIG_FILE_OPTIONS,

clients/client-sts/package.json

+1-3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"@aws-crypto/sha256-browser": "3.0.0",
2424
"@aws-crypto/sha256-js": "3.0.0",
2525
"@aws-sdk/core": "*",
26+
"@aws-sdk/credential-provider-node": "*",
2627
"@aws-sdk/middleware-host-header": "*",
2728
"@aws-sdk/middleware-logger": "*",
2829
"@aws-sdk/middleware-recursion-detection": "*",
@@ -86,9 +87,6 @@
8687
"url": "https://aws.amazon.com/javascript/"
8788
},
8889
"license": "Apache-2.0",
89-
"peerDependencies": {
90-
"@aws-sdk/credential-provider-node": "*"
91-
},
9290
"browser": {
9391
"./dist-es/runtimeConfig": "./dist-es/runtimeConfig.browser"
9492
},

clients/client-sts/src/credentialDefaultProvider.ts

-8
This file was deleted.

clients/client-sts/src/runtimeConfig.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
// @ts-ignore: package.json will be imported from dist folders
33
import packageInfo from "../package.json"; // eslint-disable-line
44

5-
import { defaultProvider as credentialDefaultProvider } from "./credentialDefaultProvider";
65
import { AwsSdkSigV4Signer, emitWarningIfUnsupportedVersion as awsCheckVersion } from "@aws-sdk/core";
6+
import { defaultProvider as credentialDefaultProvider } from "@aws-sdk/credential-provider-node";
77
import { defaultUserAgent } from "@aws-sdk/util-user-agent-node";
88
import {
99
NODE_REGION_CONFIG_FILE_OPTIONS,

codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddAwsAuthPlugin.java

+5-40
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
import software.amazon.smithy.model.shapes.OperationShape;
3939
import software.amazon.smithy.model.shapes.ServiceShape;
4040
import software.amazon.smithy.model.shapes.Shape;
41-
import software.amazon.smithy.model.shapes.ShapeId;
4241
import software.amazon.smithy.model.traits.OptionalAuthTrait;
4342
import software.amazon.smithy.typescript.codegen.CodegenUtils;
4443
import software.amazon.smithy.typescript.codegen.LanguageTarget;
@@ -208,19 +207,11 @@ public Map<String, Consumer<TypeScriptWriter>> getRuntimeConfigWriters(
208207
case NODE:
209208
return MapUtils.of(
210209
"credentialDefaultProvider", writer -> {
211-
if (isCredentialService(service)) {
212-
writer
213-
.addDependency(AwsDependency.CREDENTIAL_PROVIDER_NODE_PEER)
214-
.addRelativeImport("defaultProvider", "credentialDefaultProvider",
215-
Paths.get(".", CodegenUtils.SOURCE_FOLDER, "credentialDefaultProvider"))
216-
.write("credentialDefaultProvider");
217-
} else {
218-
writer
219-
.addDependency(AwsDependency.CREDENTIAL_PROVIDER_NODE)
220-
.addImport("defaultProvider", "credentialDefaultProvider",
221-
AwsDependency.CREDENTIAL_PROVIDER_NODE)
222-
.write("credentialDefaultProvider");
223-
}
210+
writer
211+
.addDependency(AwsDependency.CREDENTIAL_PROVIDER_NODE)
212+
.addImport("defaultProvider", "credentialDefaultProvider",
213+
AwsDependency.CREDENTIAL_PROVIDER_NODE)
214+
.write("credentialDefaultProvider");
224215
}
225216
);
226217
default:
@@ -239,22 +230,6 @@ public void customize(TypeScriptCodegenContext codegenContext) {
239230
writerFactory.accept(Paths.get(CodegenUtils.SOURCE_FOLDER, "index.ts").toString(), writer -> {
240231
writeAdditionalExports(settings, model, writer);
241232
});
242-
243-
if (isCredentialService(settings.getService(model))) {
244-
writerFactory.accept(CodegenUtils.SOURCE_FOLDER + "/credentialDefaultProvider.ts", writer -> {
245-
writer
246-
.write("""
247-
/**
248-
* @internal
249-
*/
250-
export const defaultProvider = ((input: any) => {
251-
// @ts-ignore
252-
return () => import("@aws-sdk/credential-provider-node")
253-
.then(({ defaultProvider }) => defaultProvider(input)());
254-
}) as any;
255-
""");
256-
});
257-
}
258233
}
259234

260235
private void writeAdditionalFiles(
@@ -343,14 +318,4 @@ private static boolean areAllOptionalAuthOperations(Model model, ServiceShape se
343318
}
344319
return true;
345320
}
346-
347-
/**
348-
* Some services with circular dependencies to credential providers.
349-
*/
350-
private boolean isCredentialService(ServiceShape service) {
351-
return List.of(
352-
ShapeId.from("com.amazonaws.ssooidc#AWSSSOOIDCService"),
353-
ShapeId.from("com.amazonaws.sts#AWSSecurityTokenServiceV20110615")
354-
).stream().anyMatch(service.getId()::equals);
355-
}
356321
}

codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsDependency.java

-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ public enum AwsDependency implements Dependency {
4242
MIDDLEWARE_SIGNING(NORMAL_DEPENDENCY, "@aws-sdk/middleware-signing"),
4343
MIDDLEWARE_TOKEN(NORMAL_DEPENDENCY, "@aws-sdk/middleware-token"),
4444
CREDENTIAL_PROVIDER_NODE(NORMAL_DEPENDENCY, "@aws-sdk/credential-provider-node"),
45-
CREDENTIAL_PROVIDER_NODE_PEER(PEER_DEPENDENCY, "@aws-sdk/credential-provider-node"),
4645
ACCEPT_HEADER(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-api-gateway"),
4746
S3_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-s3"),
4847
ADD_EXPECT_CONTINUE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-expect-continue"),

codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/auth/http/integration/AddSTSAuthCustomizations.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,9 @@ public Map<String, Consumer<TypeScriptWriter>> getRuntimeConfigWriters(
110110
return MapUtils.of(
111111
"credentialDefaultProvider", writer -> {
112112
writer
113-
.addRelativeImport("defaultProvider", "credentialDefaultProvider",
114-
Paths.get(".", CodegenUtils.SOURCE_FOLDER, "credentialDefaultProvider"))
115-
.addDependency(AwsDependency.CREDENTIAL_PROVIDER_NODE_PEER)
113+
.addDependency(AwsDependency.CREDENTIAL_PROVIDER_NODE)
114+
.addImport("defaultProvider", "credentialDefaultProvider",
115+
AwsDependency.CREDENTIAL_PROVIDER_NODE)
116116
.write("credentialDefaultProvider");
117117
}
118118
);

codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/auth/http/integration/AwsSdkCustomizeSigV4Auth.java

+9-61
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,10 @@
88
import static software.amazon.smithy.aws.typescript.codegen.AwsTraitsUtils.isAwsService;
99
import static software.amazon.smithy.aws.typescript.codegen.AwsTraitsUtils.isSigV4Service;
1010

11-
import java.nio.file.Paths;
1211
import java.util.Collections;
1312
import java.util.List;
1413
import java.util.Map;
1514
import java.util.Set;
16-
import java.util.function.BiConsumer;
1715
import java.util.function.Consumer;
1816
import software.amazon.smithy.aws.traits.auth.SigV4Trait;
1917
import software.amazon.smithy.aws.typescript.codegen.AwsDependency;
@@ -23,11 +21,8 @@
2321
import software.amazon.smithy.model.knowledge.TopDownIndex;
2422
import software.amazon.smithy.model.shapes.OperationShape;
2523
import software.amazon.smithy.model.shapes.ServiceShape;
26-
import software.amazon.smithy.model.shapes.ShapeId;
2724
import software.amazon.smithy.model.traits.OptionalAuthTrait;
28-
import software.amazon.smithy.typescript.codegen.CodegenUtils;
2925
import software.amazon.smithy.typescript.codegen.LanguageTarget;
30-
import software.amazon.smithy.typescript.codegen.TypeScriptCodegenContext;
3126
import software.amazon.smithy.typescript.codegen.TypeScriptDependency;
3227
import software.amazon.smithy.typescript.codegen.TypeScriptSettings;
3328
import software.amazon.smithy.typescript.codegen.TypeScriptWriter;
@@ -113,27 +108,15 @@ public Map<String, Consumer<TypeScriptWriter>> getRuntimeConfigWriters(
113108
}
114109
case NODE:
115110
if (isAwsService(service)) {
116-
if (isCredentialService(service)) {
117-
return MapUtils.of(
118-
"credentialDefaultProvider", writer -> {
119-
writer
120-
.addDependency(AwsDependency.CREDENTIAL_PROVIDER_NODE_PEER)
121-
.addRelativeImport("defaultProvider", "credentialDefaultProvider",
122-
Paths.get(".", CodegenUtils.SOURCE_FOLDER, "credentialDefaultProvider"))
123-
.write("credentialDefaultProvider");
124-
}
125-
);
126-
} else {
127-
return MapUtils.of(
128-
"credentialDefaultProvider", writer -> {
129-
writer
130-
.addDependency(AwsDependency.CREDENTIAL_PROVIDER_NODE)
131-
.addImport("defaultProvider", "credentialDefaultProvider",
132-
AwsDependency.CREDENTIAL_PROVIDER_NODE)
133-
.write("credentialDefaultProvider");
134-
}
135-
);
136-
}
111+
return MapUtils.of(
112+
"credentialDefaultProvider", writer -> {
113+
writer
114+
.addDependency(AwsDependency.CREDENTIAL_PROVIDER_NODE)
115+
.addImport("defaultProvider", "credentialDefaultProvider",
116+
AwsDependency.CREDENTIAL_PROVIDER_NODE)
117+
.write("credentialDefaultProvider");
118+
}
119+
);
137120
}
138121
default:
139122
return Collections.emptyMap();
@@ -197,31 +180,6 @@ public void customizeSupportedHttpAuthSchemes(
197180
}
198181
}
199182

200-
@Override
201-
public void customize(TypeScriptCodegenContext codegenContext) {
202-
TypeScriptSettings settings = codegenContext.settings();
203-
Model model = codegenContext.model();
204-
205-
if (isCredentialService(settings.getService(model))) {
206-
BiConsumer<String, Consumer<TypeScriptWriter>> writerFactory =
207-
codegenContext.writerDelegator()::useFileWriter;
208-
209-
writerFactory.accept(CodegenUtils.SOURCE_FOLDER + "/credentialDefaultProvider.ts", writer -> {
210-
writer
211-
.write("""
212-
/**
213-
* @internal
214-
*/
215-
export const defaultProvider = ((input: any) => {
216-
// @ts-ignore
217-
return () => import("@aws-sdk/credential-provider-node")
218-
.then(({ defaultProvider }) => defaultProvider(input)());
219-
}) as any;
220-
""");
221-
});
222-
}
223-
}
224-
225183
private boolean areAllOptionalAuthOperations(Model model, ServiceShape service) {
226184
TopDownIndex topDownIndex = TopDownIndex.of(model);
227185
Set<OperationShape> operations = topDownIndex.getContainedOperations(service);
@@ -232,14 +190,4 @@ private boolean areAllOptionalAuthOperations(Model model, ServiceShape service)
232190
}
233191
return true;
234192
}
235-
236-
/**
237-
* Some services with circular dependencies to credential providers.
238-
*/
239-
private boolean isCredentialService(ServiceShape service) {
240-
return List.of(
241-
ShapeId.from("com.amazonaws.ssooidc#AWSSSOOIDCService"),
242-
ShapeId.from("com.amazonaws.sts#AWSSecurityTokenServiceV20110615")
243-
).stream().anyMatch(service.getId()::equals);
244-
}
245193
}

packages/credential-provider-ini/package.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
},
2525
"license": "Apache-2.0",
2626
"dependencies": {
27-
"@aws-sdk/client-sts": "*",
2827
"@aws-sdk/credential-provider-env": "*",
2928
"@aws-sdk/credential-provider-process": "*",
3029
"@aws-sdk/credential-provider-sso": "*",
@@ -44,6 +43,9 @@
4443
"rimraf": "3.0.2",
4544
"typescript": "~4.9.5"
4645
},
46+
"peerDependencies": {
47+
"@aws-sdk/client-sts": "*"
48+
},
4749
"types": "./dist-types/index.d.ts",
4850
"engines": {
4951
"node": ">=14.0.0"

packages/credential-provider-ini/src/fromIni.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import type { CredentialProviderOptions } from "@aws-sdk/types";
33
import { getProfileName, parseKnownFiles, SourceProfileInit } from "@smithy/shared-ini-file-loader";
44
import type { AwsCredentialIdentity, AwsCredentialIdentityProvider, Pluggable } from "@smithy/types";
55

6-
import type { STSClientConfig } from "./loadSts";
76
import { AssumeRoleParams } from "./resolveAssumeRoleCredentials";
87
import { resolveProfileData } from "./resolveProfileData";
98

@@ -39,7 +38,12 @@ export interface FromIniInit extends SourceProfileInit, CredentialProviderOption
3938
*/
4039
roleAssumerWithWebIdentity?: (params: AssumeRoleWithWebIdentityParams) => Promise<AwsCredentialIdentity>;
4140

42-
clientConfig?: STSClientConfig;
41+
/**
42+
* STSClientConfig to be used for creating STS Client for assuming role.
43+
* @internal
44+
*/
45+
clientConfig?: any;
46+
4347
clientPlugins?: Pluggable<any, any>[];
4448
}
4549

packages/credential-provider-ini/src/loadSts.ts

-5
This file was deleted.

packages/credential-provider-ini/src/resolveAssumeRoleCredentials.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,8 @@ export const resolveAssumeRoleCredentials = async (
8787
const data = profiles[profileName];
8888

8989
if (!options.roleAssumer) {
90-
const { getDefaultRoleAssumer } = await import("./loadSts");
90+
// @ts-ignore Cannot find module '@aws-sdk/client-sts'
91+
const { getDefaultRoleAssumer } = await import("@aws-sdk/client-sts");
9192
options.roleAssumer = getDefaultRoleAssumer(
9293
{
9394
...options.clientConfig,

packages/credential-provider-web-identity/package.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
},
3333
"license": "Apache-2.0",
3434
"dependencies": {
35-
"@aws-sdk/client-sts": "*",
3635
"@aws-sdk/types": "*",
3736
"@smithy/property-provider": "^2.2.0",
3837
"@smithy/types": "^2.12.0",
@@ -46,6 +45,9 @@
4645
"rimraf": "3.0.2",
4746
"typescript": "~4.9.5"
4847
},
48+
"peerDependencies": {
49+
"@aws-sdk/client-sts": "*"
50+
},
4951
"types": "./dist-types/index.d.ts",
5052
"engines": {
5153
"node": ">=14.0.0"

packages/credential-provider-web-identity/src/fromWebToken.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import type { CredentialProviderOptions } from "@aws-sdk/types";
22
import type { AwsCredentialIdentity, AwsCredentialIdentityProvider, Pluggable } from "@smithy/types";
33

4-
import type { STSClientConfig } from "./loadSts";
5-
64
/**
75
* @public
86
*/
@@ -138,9 +136,10 @@ export interface FromWebTokenInit
138136
roleAssumerWithWebIdentity?: (params: AssumeRoleWithWebIdentityParams) => Promise<AwsCredentialIdentity>;
139137

140138
/**
139+
* STSClientConfig to be used for creating STS Client for assuming role.
141140
* @internal
142141
*/
143-
clientConfig?: STSClientConfig;
142+
clientConfig?: any;
144143

145144
/**
146145
* @internal
@@ -160,7 +159,8 @@ export const fromWebToken =
160159
let { roleAssumerWithWebIdentity } = init;
161160

162161
if (!roleAssumerWithWebIdentity) {
163-
const { getDefaultRoleAssumerWithWebIdentity } = await import("./loadSts");
162+
// @ts-ignore Cannot find module '@aws-sdk/client-sts'
163+
const { getDefaultRoleAssumerWithWebIdentity } = await import("@aws-sdk/client-sts");
164164
roleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity(
165165
{
166166
...init.clientConfig,

packages/credential-provider-web-identity/src/loadSts.ts

-5
This file was deleted.

0 commit comments

Comments
 (0)