client.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. # -*- coding: utf-8 -*-
  2. from alibabacloud_credentials import providers, credentials
  3. from alibabacloud_credentials.models import Config
  4. from alibabacloud_credentials.utils import auth_constant as ac
  5. from functools import wraps
  6. def attribute_error_return_none(f):
  7. @wraps(f)
  8. def i(*args, **kwargs):
  9. try:
  10. return f(*args, **kwargs)
  11. except AttributeError:
  12. return
  13. return i
  14. class Client(object):
  15. cloud_credential = None
  16. def __init__(self, config=None):
  17. if config is None:
  18. config = Config()
  19. provider = providers.DefaultCredentialsProvider()
  20. self.cloud_credential = provider.get_credentials()
  21. self.cloud_credential = self.get_credential(config)
  22. def get_credential(self, config):
  23. if config.type == ac.ACCESS_KEY:
  24. return credentials.AccessKeyCredential(config.access_key_id, config.access_key_secret)
  25. elif config.type == ac.STS:
  26. return credentials.StsCredential(config.access_key_id, config.access_key_secret, config.security_token)
  27. elif config.type == ac.BEARER:
  28. return credentials.BearerTokenCredential(config.bearer_token)
  29. else:
  30. return self.get_provider(config).get_credentials()
  31. @staticmethod
  32. def get_provider(config):
  33. if config.type == ac.ECS_RAM_ROLE:
  34. return providers.EcsRamRoleCredentialProvider(config=config)
  35. elif config.type == ac.RAM_ROLE_ARN:
  36. return providers.RamRoleArnCredentialProvider(config=config)
  37. elif config.type == ac.RSA_KEY_PAIR:
  38. return providers.RsaKeyPairCredentialProvider(config=config)
  39. return providers.DefaultCredentialsProvider()
  40. @attribute_error_return_none
  41. def get_access_key_id(self):
  42. return self.cloud_credential.get_access_key_id()
  43. @attribute_error_return_none
  44. def get_access_key_secret(self):
  45. return self.cloud_credential.get_access_key_secret()
  46. @attribute_error_return_none
  47. def get_security_token(self):
  48. return self.cloud_credential.get_security_token()
  49. @attribute_error_return_none
  50. def get_type(self):
  51. return self.cloud_credential.credential_type
  52. @attribute_error_return_none
  53. def get_bearer_token(self):
  54. return self.cloud_credential.bearer_token