1
#pragma once
2

            
3
#include "source/common/common/logger.h"
4
#include "source/extensions/common/aws/credentials_provider.h"
5

            
6
namespace Envoy {
7
namespace Extensions {
8
namespace Common {
9
namespace Aws {
10

            
11
/**
12
 * Returns AWS credentials from static filter configuration.
13
 *
14
 * Adheres to conventions specified in:
15
 * https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html
16
 */
17
class ConfigCredentialsProvider : public CredentialsProvider,
18
                                  public Logger::Loggable<Logger::Id::aws> {
19
public:
20
  ConfigCredentialsProvider(absl::string_view access_key_id = absl::string_view(),
21
                            absl::string_view secret_access_key = absl::string_view(),
22
                            absl::string_view session_token = absl::string_view())
23
7
      : credentials_(access_key_id, secret_access_key, session_token) {}
24
  Credentials getCredentials() override;
25
1
  bool credentialsPending() override { return false; };
26
1
  std::string providerName() override { return "ConfigCredentialsProvider"; };
27

            
28
private:
29
  const Credentials credentials_;
30
};
31

            
32
} // namespace Aws
33
} // namespace Common
34
} // namespace Extensions
35
} // namespace Envoy