From c488408f4a4cca03d8a1ce83cdf041bd56c32885 Mon Sep 17 00:00:00 2001 From: Asya Shneerson Date: Fri, 16 Oct 2026 18:58:55 +0000 Subject: [PATCH 1/2] Honor endpointOverride in STSCredentialsClient --- .../source/internal/AWSHttpResourceClient.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/aws-cpp-sdk-core/source/internal/AWSHttpResourceClient.cpp b/src/aws-cpp-sdk-core/source/internal/AWSHttpResourceClient.cpp index 1a11962e2f79..8ee134b70a79 100644 --- a/src/aws-cpp-sdk-core/source/internal/AWSHttpResourceClient.cpp +++ b/src/aws-cpp-sdk-core/source/internal/AWSHttpResourceClient.cpp @@ -553,6 +553,13 @@ namespace Aws { SetErrorMarshaller(Aws::MakeUnique(STS_RESOURCE_CLIENT_LOG_TAG)); + if (!clientConfiguration.endpointOverride.empty()) + { + m_endpoint = clientConfiguration.endpointOverride; + AWS_LOGSTREAM_INFO(STS_RESOURCE_CLIENT_LOG_TAG, "Creating STS ResourceClient with overridden endpoint: " << m_endpoint); + return; + } + Aws::StringStream ss; if (clientConfiguration.scheme == Aws::Http::Scheme::HTTP) { From f8022706f380a706bd5f43e7f9eb77e12afbc05d Mon Sep 17 00:00:00 2001 From: Asya Shneerson Date: Fri, 16 Oct 2026 19:38:48 +0000 Subject: [PATCH 2/2] Derive the .amazonaws.eu STS suffix for eusc- regions AWS European Sovereign Cloud regions (eusc-*) use the .amazonaws.eu suffix, so derive it the same way the .cn suffix is derived for China regions. Also expose GetEndpoint() so the derived endpoint can be checked in tests. --- .../aws/core/internal/AWSHttpResourceClient.h | 2 ++ .../source/internal/AWSHttpResourceClient.cpp | 13 +++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/aws-cpp-sdk-core/include/aws/core/internal/AWSHttpResourceClient.h b/src/aws-cpp-sdk-core/include/aws/core/internal/AWSHttpResourceClient.h index aec767ed6e71..5e1dffb66688 100644 --- a/src/aws-cpp-sdk-core/include/aws/core/internal/AWSHttpResourceClient.h +++ b/src/aws-cpp-sdk-core/include/aws/core/internal/AWSHttpResourceClient.h @@ -241,6 +241,8 @@ namespace Aws STSAssumeRoleWithWebIdentityResult GetAssumeRoleWithWebIdentityCredentials(const STSAssumeRoleWithWebIdentityRequest& request); + const Aws::String& GetEndpoint() const { return m_endpoint; } + private: Aws::String m_endpoint; }; diff --git a/src/aws-cpp-sdk-core/source/internal/AWSHttpResourceClient.cpp b/src/aws-cpp-sdk-core/source/internal/AWSHttpResourceClient.cpp index 8ee134b70a79..4709583723f3 100644 --- a/src/aws-cpp-sdk-core/source/internal/AWSHttpResourceClient.cpp +++ b/src/aws-cpp-sdk-core/source/internal/AWSHttpResourceClient.cpp @@ -574,10 +574,19 @@ namespace Aws static const int CN_NORTHWEST_1_HASH = Aws::Utils::HashingUtils::HashString(Aws::Region::CN_NORTHWEST_1); auto hash = Aws::Utils::HashingUtils::HashString(clientConfiguration.region.c_str()); - ss << "sts." << clientConfiguration.region << ".amazonaws.com"; + ss << "sts." << clientConfiguration.region << ".amazonaws."; if (hash == CN_NORTH_1_HASH || hash == CN_NORTHWEST_1_HASH) { - ss << ".cn"; + ss << "com.cn"; + } + else if (clientConfiguration.region.rfind("eusc-", 0) == 0) + { + // AWS European Sovereign Cloud regions use the .amazonaws.eu suffix. + ss << "eu"; + } + else + { + ss << "com"; } m_endpoint = ss.str();