Skip to content

Commit dfbd7dd

Browse files
committed
added two more credential providers, profile and imds
added new sign methods for s3express to take in context
1 parent 29614f4 commit dfbd7dd

File tree

9 files changed

+61
-2
lines changed

9 files changed

+61
-2
lines changed

generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/S3ExpressIdentityProvider.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include <aws/core/utils/memory/stl/AWSString.h>
1010
#include <aws/core/utils/ConcurrentCache.h>
1111
#include <aws/core/auth/signer/AWSAuthSignerBase.h>
12+
#include <aws/core/auth/AWSCredentialsProvider.h>
1213
#include <aws/s3-crt/S3ExpressIdentity.h>
1314
#include <smithy/identity/resolver/AwsIdentityResolverBase.h>
1415
#include <thread>
@@ -27,6 +28,12 @@ namespace Aws {
2728

2829
virtual S3ExpressIdentity
2930
GetS3ExpressIdentity(const std::shared_ptr<Aws::Http::ServiceSpecificParameters> &serviceSpecificParameters) = 0;
31+
32+
virtual S3ExpressIdentity
33+
GetS3ExpressIdentity(Aws::Auth::CredentialsResolutionContext& context, const std::shared_ptr<Aws::Http::ServiceSpecificParameters> &serviceSpecificParameters) {
34+
AWS_UNREFERENCED_PARAM(context);
35+
return GetS3ExpressIdentity(serviceSpecificParameters);
36+
}
3037

3138
ResolveIdentityFutureOutcome
3239
getIdentity(const IdentityProperties& identityProperties, const AdditionalParameters& additionalParameters) override;
@@ -59,6 +66,8 @@ namespace Aws {
5966
virtual ~DefaultS3ExpressIdentityProvider() override = default;
6067

6168
S3ExpressIdentity GetS3ExpressIdentity(const std::shared_ptr<Aws::Http::ServiceSpecificParameters> &serviceSpecificParameters) override;
69+
70+
S3ExpressIdentity GetS3ExpressIdentity(Aws::Auth::CredentialsResolutionContext& context, const std::shared_ptr<Aws::Http::ServiceSpecificParameters> &serviceSpecificParameters) override;
6271

6372
private:
6473
mutable std::shared_ptr<Aws::Utils::ConcurrentCache<Aws::String, S3ExpressIdentity>> m_credentialsCache;
@@ -81,6 +90,8 @@ namespace Aws {
8190
virtual ~DefaultAsyncS3ExpressIdentityProvider() override;
8291

8392
S3ExpressIdentity GetS3ExpressIdentity(const std::shared_ptr<Aws::Http::ServiceSpecificParameters> &serviceSpecificParameters) override;
93+
94+
S3ExpressIdentity GetS3ExpressIdentity(Aws::Auth::CredentialsResolutionContext& context, const std::shared_ptr<Aws::Http::ServiceSpecificParameters> &serviceSpecificParameters) override;
8495

8596
private:
8697
void refreshIdentities(std::chrono::minutes refreshPeriod);

generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/S3ExpressSigner.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ namespace Aws {
4343

4444
Aws::Auth::AWSCredentials GetCredentials(const std::shared_ptr<Aws::Http::ServiceSpecificParameters> &serviceSpecificParameters) const override;
4545

46+
Aws::Auth::AWSCredentials GetCredentials(Aws::Auth::CredentialsResolutionContext& context, const std::shared_ptr<Aws::Http::ServiceSpecificParameters> &serviceSpecificParameters) const override;
47+
4648
protected:
4749
bool ServiceRequireUnsignedPayload(const String &serviceName) const override;
4850

generated/src/aws-cpp-sdk-s3-crt/source/S3ExpressIdentityProvider.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,11 @@ S3ExpressIdentity DefaultS3ExpressIdentityProvider::GetS3ExpressIdentity(const s
115115
return identity;
116116
}
117117

118+
S3ExpressIdentity DefaultS3ExpressIdentityProvider::GetS3ExpressIdentity(Aws::Auth::CredentialsResolutionContext& context, const std::shared_ptr<Aws::Http::ServiceSpecificParameters> &serviceSpecificParameters) {
119+
AWS_UNREFERENCED_PARAM(context);
120+
return GetS3ExpressIdentity(serviceSpecificParameters);
121+
}
122+
118123
Aws::S3Crt::DefaultAsyncS3ExpressIdentityProvider::DefaultAsyncS3ExpressIdentityProvider(
119124
const S3CrtClient &s3Client,
120125
std::chrono::minutes refreshPeriod) :
@@ -192,6 +197,11 @@ S3ExpressIdentity DefaultAsyncS3ExpressIdentityProvider::GetS3ExpressIdentity(co
192197
return identity;
193198
}
194199

200+
S3ExpressIdentity DefaultAsyncS3ExpressIdentityProvider::GetS3ExpressIdentity(Aws::Auth::CredentialsResolutionContext& context, const std::shared_ptr<ServiceSpecificParameters> &serviceSpecificParameters) {
201+
AWS_UNREFERENCED_PARAM(context);
202+
return GetS3ExpressIdentity(serviceSpecificParameters);
203+
}
204+
195205
void DefaultAsyncS3ExpressIdentityProvider::threadSafeKeyEmpty() {
196206
std::lock_guard<std::mutex> lock(m_keysUsedMutex);
197207
m_keysUsed.clear();

generated/src/aws-cpp-sdk-s3-crt/source/S3ExpressSigner.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/**
1+
/**
22
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
33
* SPDX-License-Identifier: Apache-2.0.
44
*/
@@ -95,3 +95,8 @@ Aws::Auth::AWSCredentials S3ExpressSigner::GetCredentials(const std::shared_ptr<
9595
auto identity = m_S3ExpressIdentityProvider->GetS3ExpressIdentity(serviceSpecificParameters);
9696
return {identity.getAccessKeyId(), identity.getSecretKeyId()};
9797
}
98+
99+
Aws::Auth::AWSCredentials S3ExpressSigner::GetCredentials(Aws::Auth::CredentialsResolutionContext& context, const std::shared_ptr<Aws::Http::ServiceSpecificParameters> &serviceSpecificParameters) const {
100+
auto identity = m_S3ExpressIdentityProvider->GetS3ExpressIdentity(context, serviceSpecificParameters);
101+
return {identity.getAccessKeyId(), identity.getSecretKeyId()};
102+
}

src/aws-cpp-sdk-core/include/aws/core/auth/AWSCredentialsProvider.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,11 @@ namespace Aws
218218
* Retrieves the credentials if found, otherwise returns empty credential set.
219219
*/
220220
AWSCredentials GetAWSCredentials() override;
221+
222+
/**
223+
* Context-based interface that adds profile credential tracking.
224+
*/
225+
AWSCredentials GetAWSCredentials(CredentialsResolutionContext& context) override;
221226

222227
/**
223228
* Returns the fullpath of the calculated credentials profile file
@@ -271,6 +276,11 @@ namespace Aws
271276
* Retrieves the credentials if found, otherwise returns empty credential set.
272277
*/
273278
AWSCredentials GetAWSCredentials() override;
279+
280+
/**
281+
* Context-based interface that adds instance profile credential tracking.
282+
*/
283+
AWSCredentials GetAWSCredentials(CredentialsResolutionContext& context) override;
274284

275285
protected:
276286
void Reload() override;

src/aws-cpp-sdk-core/include/aws/core/client/UserAgent.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ enum class UserAgentFeature {
3333
RESOLVED_ACCOUNT_ID,
3434
GZIP_REQUEST_COMPRESSION,
3535
CREDENTIALS_ENV_VARS,
36+
CREDENTIALS_IMDS,
37+
CREDENTIALS_PROFILE,
3638
};
3739

3840
class AWS_CORE_API UserAgent {

src/aws-cpp-sdk-core/source/auth/AWSCredentialsProvider.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,14 @@ AWSCredentials ProfileConfigFileAWSCredentialsProvider::GetAWSCredentials()
212212
return AWSCredentials();
213213
}
214214

215+
AWSCredentials ProfileConfigFileAWSCredentialsProvider::GetAWSCredentials(CredentialsResolutionContext& context)
216+
{
217+
AWSCredentials credentials = GetAWSCredentials();
218+
if (!credentials.IsEmpty()) {
219+
context.AddUserAgentFeature(Aws::Client::UserAgentFeature::CREDENTIALS_PROFILE);
220+
}
221+
return credentials;
222+
}
215223

216224
void ProfileConfigFileAWSCredentialsProvider::Reload()
217225
{
@@ -281,6 +289,15 @@ AWSCredentials InstanceProfileCredentialsProvider::GetAWSCredentials()
281289
return AWSCredentials();
282290
}
283291

292+
AWSCredentials InstanceProfileCredentialsProvider::GetAWSCredentials(CredentialsResolutionContext& context)
293+
{
294+
AWSCredentials credentials = GetAWSCredentials();
295+
if (!credentials.IsEmpty()) {
296+
context.AddUserAgentFeature(Aws::Client::UserAgentFeature::CREDENTIALS_IMDS);
297+
}
298+
return credentials;
299+
}
300+
284301
bool InstanceProfileCredentialsProvider::ExpiresSoon() const
285302
{
286303
auto profileIter = m_ec2MetadataConfigLoader->GetProfiles().find(Aws::Config::INSTANCE_PROFILE_KEY);

src/aws-cpp-sdk-core/source/auth/signer/AWSAuthV4Signer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ bool AWSAuthV4Signer::SignRequest(Aws::Http::HttpRequest& request, const char* r
338338
{
339339
Aws::Auth::CredentialsResolutionContext context;
340340
AWSCredentials credentials = GetCredentials(context, request.GetServiceSpecificParameters());
341-
341+
342342
// Update User-Agent with credential tracking features from context
343343
UpdateUserAgentWithCredentialFeatures(request, context);
344344

src/aws-cpp-sdk-core/source/client/UserAgent.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ const std::pair<UserAgentFeature, const char*> BUSINESS_METRIC_MAPPING[] = {
4343
{UserAgentFeature::RESOLVED_ACCOUNT_ID, "T"},
4444
{UserAgentFeature::GZIP_REQUEST_COMPRESSION, "L"},
4545
{UserAgentFeature::CREDENTIALS_ENV_VARS, "g"},
46+
{UserAgentFeature::CREDENTIALS_IMDS, "0"},
47+
{UserAgentFeature::CREDENTIALS_PROFILE, "n"},
4648
};
4749

4850
Aws::String BusinessMetricForFeature(UserAgentFeature feature) {

0 commit comments

Comments
 (0)