AWS SDK for C++

AWS SDK for C++ Version 1.11.810

Loading...
Searching...
No Matches
AWSCredentialsProvider.h
1
7#pragma once
8#if !defined(AWS_CREDENTIALS_PROVIDER)
9#define AWS_CREDENTIALS_PROVIDER
10
11#include <aws/core/Core_EXPORTS.h>
12#include <aws/core/utils/UnreferencedParam.h>
13#include <aws/core/utils/DateTime.h>
14#include <aws/core/utils/memory/stl/AWSMap.h>
15#include <aws/core/utils/memory/stl/AWSString.h>
16#include <aws/core/utils/threading/ReaderWriterLock.h>
17#include <aws/core/internal/AWSHttpResourceClient.h>
18#include <aws/core/auth/AWSCredentials.h>
19#include <aws/core/config/AWSProfileConfigLoader.h>
20#include <aws/core/client/RetryStrategy.h>
21#include <memory>
22
23namespace Aws
24{
25 namespace Client
26 {
28 }
29 namespace Auth
30 {
31 constexpr int REFRESH_THRESHOLD = 1000 * 60 * 5;
32
34
38 AWS_CORE_API Aws::String GetConfigProfileFilename(); //defaults to "config"
39
47 AWS_CORE_API Aws::String GetConfigProfileName(); //defaults to "default"
48
49 /*
50 * Fetches credentials by executing the process in the parameter
51 */
53
58 class AWS_CORE_API AWSCredentialsProvider
59 {
60 public:
65 AWSCredentialsProvider() : m_lastLoadedMs(0)
66 {
67 }
68
69 virtual ~AWSCredentialsProvider() = default;
70
75
76 protected:
81 virtual bool IsTimeToRefresh(long reloadFrequency);
82 virtual void Reload();
84 private:
85 long long m_lastLoadedMs;
86 };
87
93 {
94 public:
98 inline AWSCredentials GetAWSCredentials() override { return AWSCredentials(); }
99 };
100
107 {
108 public:
112 inline SimpleAWSCredentialsProvider(const Aws::String& awsAccessKeyId, const Aws::String& awsSecretAccessKey, const Aws::String& sessionToken = "")
113 : m_credentials(awsAccessKeyId, awsSecretAccessKey, sessionToken)
114 { }
115
120 : m_credentials(credentials)
121 { }
122
127 {
128 return m_credentials;
129 }
130
131 private:
132 AWSCredentials m_credentials;
133 };
134
140 {
141 public:
147 };
148
156 // class AWS_DEPRECATED("This class is in the maintenance mode, no new updates will be released, use S3EncryptionClientV3. Please see https://docs.aws.amazon.com/general/latest/gr/aws_sdk_cryptography.html for more information.") AWS_CORE_API ProfileConfigFileAWSCredentialsProvider : public AWSCredentialsProvider
158 {
159 public:
160
164 ProfileConfigFileAWSCredentialsProvider(long refreshRateMs = REFRESH_THRESHOLD);
165
170 ProfileConfigFileAWSCredentialsProvider(const char* profile, long refreshRateMs = REFRESH_THRESHOLD);
171
176
181
186
187 protected:
188 void Reload() override;
189 private:
190
194 void RefreshIfExpired();
195
196 Aws::String m_profileToUse;
197 Aws::Config::AWSConfigFileProfileConfigLoader m_credentialsFileLoader;
198 long m_loadFrequencyMs;
199 };
200
206 {
207 public:
212 InstanceProfileCredentialsProvider(long refreshRateMs = REFRESH_THRESHOLD);
213
218 InstanceProfileCredentialsProvider(const std::shared_ptr<Aws::Config::EC2InstanceProfileConfigLoader>&, long refreshRateMs = REFRESH_THRESHOLD);
219
223 InstanceProfileCredentialsProvider(const Aws::Client::ClientConfiguration::CredentialProviderConfiguration& credentialProviderConfig, long refreshRateMs = REFRESH_THRESHOLD);
224
229
230 protected:
231 void Reload() override;
232
233 private:
234 bool ExpiresSoon() const;
235 void RefreshIfExpired();
236
237 std::shared_ptr<Aws::Config::AWSProfileConfigLoader> m_ec2MetadataConfigLoader;
238 long m_loadFrequencyMs;
239 };
240
255 {
256 public:
261
267
272
273 protected:
274 void Reload() override;
275 private:
276 void RefreshIfExpired();
277
278 private:
279 Aws::String m_profileToUse;
280 Aws::Auth::AWSCredentials m_credentials;
281 };
282 } // namespace Auth
283} // namespace Aws
284
285// TODO: remove on a next minor API bump from 1.11.x
286#endif // !defined(AWS_CLIENT_H)
287#include <aws/core/auth/GeneralHTTPCredentialsProvider.h>
Aws::Utils::Threading::ReaderWriterLock m_reloadLock
virtual AWSCredentials GetAWSCredentials()=0
virtual bool IsTimeToRefresh(long reloadFrequency)
virtual ~AWSCredentialsProvider()=default
AWSCredentials GetAWSCredentials() override
InstanceProfileCredentialsProvider(long refreshRateMs=REFRESH_THRESHOLD)
InstanceProfileCredentialsProvider(const std::shared_ptr< Aws::Config::EC2InstanceProfileConfigLoader > &, long refreshRateMs=REFRESH_THRESHOLD)
AWSCredentials GetAWSCredentials() override
InstanceProfileCredentialsProvider(const Aws::Client::ClientConfiguration::CredentialProviderConfiguration &credentialProviderConfig, long refreshRateMs=REFRESH_THRESHOLD)
ProcessCredentialsProvider(const Aws::String &profile)
AWSCredentials GetAWSCredentials() override
ProfileConfigFileAWSCredentialsProvider(long refreshRateMs=REFRESH_THRESHOLD)
ProfileConfigFileAWSCredentialsProvider(const char *profile, long refreshRateMs=REFRESH_THRESHOLD)
SimpleAWSCredentialsProvider(const AWSCredentials &credentials)
SimpleAWSCredentialsProvider(const Aws::String &awsAccessKeyId, const Aws::String &awsSecretAccessKey, const Aws::String &sessionToken="")
constexpr int REFRESH_THRESHOLD
AWS_CORE_API Aws::String GetConfigProfileName()
AWS_CORE_API Aws::String GetConfigProfileFilename()
constexpr int AWS_CREDENTIAL_PROVIDER_EXPIRATION_GRACE_PERIOD
AWS_CORE_API AWSCredentials GetCredentialsFromProcess(const Aws::String &process)
std::basic_string< char, std::char_traits< char >, Aws::Allocator< char > > String
Definition AWSString.h:97