From 5b4432265b1f9244fe47a5e26f4e9c2510ad21a1 Mon Sep 17 00:00:00 2001 From: Isaiah Hall Date: Tue, 25 Jun 2024 15:35:09 -0400 Subject: [PATCH 1/3] chore(client-sso-oidc): set sts to peer --- clients/client-sso-oidc/package.json | 4 +++- .../codegen/AwsCredentialProviderUtils.java | 15 +++++++++++---- .../aws/typescript/codegen/AwsDependency.java | 1 + 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/clients/client-sso-oidc/package.json b/clients/client-sso-oidc/package.json index 6ce510d5e2ad5..dd3431f462b59 100644 --- a/clients/client-sso-oidc/package.json +++ b/clients/client-sso-oidc/package.json @@ -20,7 +20,6 @@ "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sts": "*", "@aws-sdk/core": "*", "@aws-sdk/credential-provider-node": "*", "@aws-sdk/middleware-host-header": "*", @@ -59,6 +58,9 @@ "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, + "peerDependencies": { + "@aws-sdk/client-sts": "*" + }, "devDependencies": { "@tsconfig/node16": "16.1.3", "@types/node": "^16.18.96", diff --git a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsCredentialProviderUtils.java b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsCredentialProviderUtils.java index ad61be8e2c6da..5c5c30e955a79 100644 --- a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsCredentialProviderUtils.java +++ b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsCredentialProviderUtils.java @@ -26,20 +26,27 @@ @SmithyInternalApi public final class AwsCredentialProviderUtils { - private AwsCredentialProviderUtils() {} + private AwsCredentialProviderUtils() {} /** * Adds dependencies required by the default credential provider. * The dependencies are skipped in first party credential providers to avoid circular dependency issue. */ public static void addAwsCredentialProviderDependencies(ServiceShape service, TypeScriptWriter writer) { - if (!service.getId().equals(ShapeId.from("com.amazonaws.ssooidc#AWSSSOOIDCService"))) { + boolean isSTS = service.getId().equals(ShapeId.from("com.amazonaws.sts#AWSSecurityTokenServiceV20110615")); + boolean isSSOOIDC = service.getId().equals(ShapeId.from("com.amazonaws.ssooidc#AWSSSOOIDCService")); + if (!isSSOOIDC) { // SSO OIDC client is required in Sso credential provider writer.addDependency(AwsDependency.SSO_OIDC_CLIENT); } - if (!service.getId().equals(ShapeId.from("com.amazonaws.sts#AWSSecurityTokenServiceV20110615"))) { + if (!isSTS) { // STS client is required in Ini and WebIdentity credential providers - writer.addDependency(AwsDependency.STS_CLIENT); + if (isSSOOIDC) { + // For the SSO OIDC client, adding the STS client as a peerDependency avoids circular dependency issues. + writer.addDependency(AwsDependency.STS_CLIENT_PEER); + } else { + writer.addDependency(AwsDependency.STS_CLIENT); + } } } } diff --git a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsDependency.java b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsDependency.java index c9c8bd32ed80f..a4a58fe8ec139 100644 --- a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsDependency.java +++ b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsDependency.java @@ -67,6 +67,7 @@ public enum AwsDependency implements Dependency { TRANSCRIBE_STREAMING_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-transcribe-streaming"), STS_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-sts"), STS_CLIENT(NORMAL_DEPENDENCY, "@aws-sdk/client-sts"), + STS_CLIENT_PEER(PEER_DEPENDENCY, "@aws-sdk/client-sts"), SSO_OIDC_CLIENT(NORMAL_DEPENDENCY, "@aws-sdk/client-sso-oidc"), MIDDLEWARE_LOGGER(NORMAL_DEPENDENCY, "@aws-sdk/middleware-logger"), MIDDLEWARE_USER_AGENT("dependencies", "@aws-sdk/middleware-user-agent"), From 1e0a60e8479f418d746ded945ee4689ebd6fc549 Mon Sep 17 00:00:00 2001 From: Isaiah Hall Date: Tue, 25 Jun 2024 17:42:26 -0400 Subject: [PATCH 2/3] chore: fix style for CI error --- .../aws/typescript/codegen/AwsCredentialProviderUtils.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsCredentialProviderUtils.java b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsCredentialProviderUtils.java index 74e62b02e53dd..9921725042b25 100644 --- a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsCredentialProviderUtils.java +++ b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsCredentialProviderUtils.java @@ -33,7 +33,8 @@ private AwsCredentialProviderUtils() {} * The dependencies are skipped in first party credential providers to avoid circular dependency issue. */ public static void addAwsCredentialProviderDependencies(ServiceShape service, TypeScriptWriter writer) { - boolean isStsClient = service.getId().equals(ShapeId.from("com.amazonaws.sts#AWSSecurityTokenServiceV20110615")); + boolean isStsClient = + service.getId().equals(ShapeId.from("com.amazonaws.sts#AWSSecurityTokenServiceV20110615")); boolean isSsoOidcClient = service.getId().equals(ShapeId.from("com.amazonaws.ssooidc#AWSSSOOIDCService")); if (!isSsoOidcClient) { // SSO OIDC client is required in Sso credential provider From afffa3a94ddfd9986303d7387a5ad465629e1d4a Mon Sep 17 00:00:00 2001 From: Isaiah Hall Date: Tue, 25 Jun 2024 18:00:06 -0400 Subject: [PATCH 3/3] chore: fix style for CI error --- .../aws/typescript/codegen/AwsCredentialProviderUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsCredentialProviderUtils.java b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsCredentialProviderUtils.java index 9921725042b25..6cc6c87d87bbb 100644 --- a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsCredentialProviderUtils.java +++ b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsCredentialProviderUtils.java @@ -33,7 +33,7 @@ private AwsCredentialProviderUtils() {} * The dependencies are skipped in first party credential providers to avoid circular dependency issue. */ public static void addAwsCredentialProviderDependencies(ServiceShape service, TypeScriptWriter writer) { - boolean isStsClient = + boolean isStsClient = service.getId().equals(ShapeId.from("com.amazonaws.sts#AWSSecurityTokenServiceV20110615")); boolean isSsoOidcClient = service.getId().equals(ShapeId.from("com.amazonaws.ssooidc#AWSSSOOIDCService")); if (!isSsoOidcClient) {