AWSCVarCredentialHandler.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. #include <AzCore/Console/IConsole.h>
  9. #include <Credential/AWSCVarCredentialHandler.h>
  10. namespace AWSCore
  11. {
  12. AZ_CVAR(AZ::CVarFixedString, cl_awsAccessKey, "", nullptr, AZ::ConsoleFunctorFlags::IsInvisible, "Override AWS access key");
  13. AZ_CVAR(AZ::CVarFixedString, cl_awsSecretKey, "", nullptr, AZ::ConsoleFunctorFlags::IsInvisible, "Override AWS secret key");
  14. static constexpr char AWSCVARCREDENTIALHANDLER_ALLOC_TAG[] = "AWSCVarCredentialHandler";
  15. void AWSCVarCredentialHandler::ActivateHandler()
  16. {
  17. ResetCredentialsProvider();
  18. AWSCredentialRequestBus::Handler::BusConnect();
  19. }
  20. void AWSCVarCredentialHandler::DeactivateHandler()
  21. {
  22. AWSCredentialRequestBus::Handler::BusDisconnect();
  23. ResetCredentialsProvider();
  24. }
  25. int AWSCVarCredentialHandler::GetCredentialHandlerOrder() const
  26. {
  27. return CredentialHandlerOrder::CVAR_CREDENTIAL_HANDLER;
  28. }
  29. std::shared_ptr<Aws::Auth::AWSCredentialsProvider> AWSCVarCredentialHandler::GetCredentialsProvider()
  30. {
  31. const auto accessKey = static_cast<AZ::CVarFixedString>(cl_awsAccessKey);
  32. const auto secretKey = static_cast<AZ::CVarFixedString>(cl_awsSecretKey);
  33. if (!accessKey.empty() && !secretKey.empty())
  34. {
  35. AZStd::lock_guard<AZStd::mutex> credentialsLock{ m_credentialMutex };
  36. m_cvarCredentialsProvider = Aws::MakeShared<Aws::Auth::SimpleAWSCredentialsProvider>(
  37. AWSCVARCREDENTIALHANDLER_ALLOC_TAG, accessKey.c_str(), secretKey.c_str());
  38. return m_cvarCredentialsProvider;
  39. }
  40. return nullptr;
  41. }
  42. void AWSCVarCredentialHandler::ResetCredentialsProvider()
  43. {
  44. // Must reset credential provider after AWSNativeSDKs init or before AWSNativeSDKs shutdown
  45. AZStd::lock_guard<AZStd::mutex> credentialsLock{ m_credentialMutex };
  46. m_cvarCredentialsProvider.reset();
  47. }
  48. } // namespace AWSCore