Skip to content

Commit 39532e4

Browse files
authored
fix(codegen): use AWS SDK default credentials as sigv4 default credentials (#6431)
1 parent d1cdb6e commit 39532e4

File tree

5 files changed

+31
-0
lines changed

5 files changed

+31
-0
lines changed

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

+17
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,11 @@ public Map<String, Consumer<TypeScriptWriter>> getRuntimeConfigWriters(
102102
"credentialDefaultProvider", w ->
103103
w.write("((_: unknown) => () => Promise.reject(new Error(\"Credential is missing\")))")
104104
);
105+
} else {
106+
return MapUtils.of(
107+
"credentials", w ->
108+
w.write("(() => () => Promise.reject(new Error(\"Credentials are missing\")))")
109+
);
105110
}
106111
case NODE:
107112
if (isAwsService(service)) {
@@ -133,6 +138,18 @@ public Map<String, Consumer<TypeScriptWriter>> getRuntimeConfigWriters(
133138
);
134139
}
135140
return map;
141+
} else {
142+
// isSigV4Service and !isAwsService are implied here.
143+
return MapUtils.of(
144+
"credentials", writer -> {
145+
writer
146+
.addDependency(AwsDependency.CREDENTIAL_PROVIDER_NODE)
147+
.addImport("defaultProvider", "credentialDefaultProvider",
148+
AwsDependency.CREDENTIAL_PROVIDER_NODE)
149+
.write("credentialDefaultProvider()");
150+
AwsCredentialProviderUtils.addAwsCredentialProviderDependencies(service, writer);
151+
}
152+
);
136153
}
137154
default:
138155
return Collections.emptyMap();

private/aws-util-test/src/clients/Weather.integ.spec.ts

+8
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,12 @@ describe(Weather.name, () => {
2020

2121
expect.hasAssertions();
2222
});
23+
24+
it("should be assigned a default credentials object for sigv4 auth", async () => {
25+
const client = new Weather({
26+
endpoint: "https://localhost",
27+
});
28+
29+
expect(client.config.credentials).toBeDefined();
30+
});
2331
});

private/weather/package.json

+3
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@
1919
"dependencies": {
2020
"@aws-crypto/sha256-browser": "5.2.0",
2121
"@aws-crypto/sha256-js": "5.2.0",
22+
"@aws-sdk/client-sso-oidc": "*",
23+
"@aws-sdk/client-sts": "*",
2224
"@aws-sdk/core": "*",
25+
"@aws-sdk/credential-provider-node": "*",
2326
"@aws-sdk/middleware-host-header": "*",
2427
"@aws-sdk/middleware-logger": "*",
2528
"@aws-sdk/middleware-recursion-detection": "*",

private/weather/src/runtimeConfig.browser.ts

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export const getRuntimeConfig = (config: WeatherClientConfig) => {
2626
runtime: "browser",
2727
defaultsMode,
2828
bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,
29+
credentials: config?.credentials ?? (() => () => Promise.reject(new Error("Credentials are missing"))),
2930
defaultUserAgentProvider:
3031
config?.defaultUserAgentProvider ?? defaultUserAgent({ clientVersion: packageInfo.version }),
3132
maxAttempts: config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS,

private/weather/src/runtimeConfig.ts

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
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 "@aws-sdk/credential-provider-node";
56
import { defaultUserAgent } from "@aws-sdk/util-user-agent-node";
67
import { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS } from "@smithy/config-resolver";
78
import { Hash } from "@smithy/hash-node";
@@ -30,6 +31,7 @@ export const getRuntimeConfig = (config: WeatherClientConfig) => {
3031
runtime: "node",
3132
defaultsMode,
3233
bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,
34+
credentials: config?.credentials ?? credentialDefaultProvider(),
3335
defaultUserAgentProvider:
3436
config?.defaultUserAgentProvider ?? defaultUserAgent({ clientVersion: packageInfo.version }),
3537
maxAttempts: config?.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS),

0 commit comments

Comments
 (0)