diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b063d950fbe..a4e83db8aee 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ apache-commons-collections = "4.4" apache-commons-io = "2.16.0" assertJ = "3.26.3" # match with /settings.gradle.kts -awsSdk = "2.26.25" +awsSdk = "2.28.7" commonmark = "0.22.0" detekt = "1.23.6" intellijExt = "1.1.8" diff --git a/plugins/core/core/src/migration/software/aws/toolkits/core/ToolkitClientManager.kt b/plugins/core/core/src/migration/software/aws/toolkits/core/ToolkitClientManager.kt index 265107422b4..542001b68e6 100644 --- a/plugins/core/core/src/migration/software/aws/toolkits/core/ToolkitClientManager.kt +++ b/plugins/core/core/src/migration/software/aws/toolkits/core/ToolkitClientManager.kt @@ -20,10 +20,12 @@ import software.amazon.awssdk.core.client.config.SdkAdvancedClientOption import software.amazon.awssdk.core.interceptor.Context import software.amazon.awssdk.core.interceptor.ExecutionAttributes import software.amazon.awssdk.core.interceptor.ExecutionInterceptor -import software.amazon.awssdk.core.interceptor.SdkInternalExecutionAttribute -import software.amazon.awssdk.core.internal.http.pipeline.stages.ApplyUserAgentStage import software.amazon.awssdk.core.internal.http.pipeline.stages.ApplyUserAgentStage.HEADER_USER_AGENT +import software.amazon.awssdk.core.internal.useragent.SdkClientUserAgentProperties +import software.amazon.awssdk.core.internal.useragent.SdkUserAgentBuilder +import software.amazon.awssdk.core.internal.useragent.UserAgentConstant import software.amazon.awssdk.core.retry.RetryMode +import software.amazon.awssdk.core.util.SystemUserAgent import software.amazon.awssdk.http.SdkHttpClient import software.amazon.awssdk.regions.Region import software.amazon.awssdk.utils.SdkAutoCloseable @@ -205,18 +207,22 @@ abstract class ToolkitClientManager { } val clientType = executionAttributes.getAttribute(AwsExecutionAttribute.CLIENT_TYPE) - val sdkClient = executionAttributes.getAttribute(SdkInternalExecutionAttribute.SDK_CLIENT) - val serviceClientConfiguration = sdkClient.serviceClientConfiguration() - val retryMode = serviceClientConfiguration.overrideConfiguration().retryMode().orElse(RetryMode.defaultRetryMode()) val toolkitUserAgent = userAgent() - val requestUserAgent = ApplyUserAgentStage.resolveClientUserAgent( - toolkitUserAgent, - null, - clientType, - null, - null, - retryMode.toString().lowercase() + // no obvious clean way to do this and multiple people have wasted a lot of time here + // what we really want is to have a dynamic SdkAdvancedClientOption#USER_AGENT_PREFIX, + // but SDK only allows static values to be set on the client + val requestUserAgent = "$toolkitUserAgent " + SdkUserAgentBuilder.buildClientUserAgentString( + SystemUserAgent.getOrCreate(), + SdkClientUserAgentProperties().apply { + // assume default because it is very complicated to resolve + putProperty(UserAgentConstant.RETRY_MODE, "standard") + + putProperty(UserAgentConstant.IO, clientType.name.lowercase()) + + // can probably figure it out, but SDK default resolves as UNKNOWN anyways without our interceptor + putProperty(UserAgentConstant.HTTP, "UNKNOWN") + } ) val overrideConfiguration = request.overrideConfiguration() diff --git a/settings.gradle.kts b/settings.gradle.kts index 6d90bba3ac9..b9e772a5303 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -49,7 +49,7 @@ buildscript { // match with version catalog, s3-build-cache has silent classpath conflict with codegen task // also since this is a settings plugin, we can't use a version catalog dependencies { - classpath(platform("software.amazon.awssdk:bom:2.26.25")) + classpath(platform("software.amazon.awssdk:bom:2.28.7")) } }