3
0

AWSDefaultCredentialHandler.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #include <AzCore/std/string/string.h>
  10. #include <aws/core/auth/AWSCredentialsProvider.h>
  11. #include <Credential/AWSCredentialBus.h>
  12. namespace AWSCore
  13. {
  14. //! AWSDefaultCredentialHandler is the handler to manage default chain of
  15. //! AWS credentials
  16. class AWSDefaultCredentialHandler
  17. : AWSCredentialRequestBus::Handler
  18. {
  19. public:
  20. AWSDefaultCredentialHandler();
  21. ~AWSDefaultCredentialHandler() override = default;
  22. //! Activate handler and its credentials provider, make sure activation
  23. //! invoked after AWSNativeSDK init to avoid memory leak
  24. void ActivateHandler();
  25. //! Deactivate handler and its credentials provider, make sure deactivation
  26. //! invoked before AWSNativeSDK shutdown to avoid memory leak
  27. void DeactivateHandler();
  28. // AWSCredentialRequestBus interface implementation
  29. int GetCredentialHandlerOrder() const override;
  30. std::shared_ptr<Aws::Auth::AWSCredentialsProvider> GetCredentialsProvider() override;
  31. protected:
  32. void SetEnvironmentCredentialsProvider(std::shared_ptr<Aws::Auth::EnvironmentAWSCredentialsProvider> credentialsProvider);
  33. void SetProfileCredentialsProvider(std::shared_ptr<Aws::Auth::ProfileConfigFileAWSCredentialsProvider> credentialsProvider);
  34. void SetInstanceProfileCredentialProvider(std::shared_ptr<Aws::Auth::InstanceProfileCredentialsProvider> credentialsProvider);
  35. private:
  36. void InitCredentialsProviders();
  37. void ResetCredentialsProviders();
  38. AZStd::mutex m_credentialMutex;
  39. std::shared_ptr<Aws::Auth::EnvironmentAWSCredentialsProvider> m_environmentCredentialsProvider;
  40. AZStd::string m_profileName;
  41. std::shared_ptr<Aws::Auth::ProfileConfigFileAWSCredentialsProvider> m_profileCredentialsProvider;
  42. std::shared_ptr<Aws::Auth::InstanceProfileCredentialsProvider> m_instanceProfileCredentialsProvider;
  43. };
  44. } // namespace AWSCore