static_sts.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package providers
  2. import (
  3. "errors"
  4. "os"
  5. )
  6. type StaticSTSCredentialsProvider struct {
  7. accessKeyId string
  8. accessKeySecret string
  9. securityToken string
  10. }
  11. type StaticSTSCredentialsProviderBuilder struct {
  12. provider *StaticSTSCredentialsProvider
  13. }
  14. func NewStaticSTSCredentialsProviderBuilder() *StaticSTSCredentialsProviderBuilder {
  15. return &StaticSTSCredentialsProviderBuilder{
  16. provider: &StaticSTSCredentialsProvider{},
  17. }
  18. }
  19. func (builder *StaticSTSCredentialsProviderBuilder) WithAccessKeyId(accessKeyId string) *StaticSTSCredentialsProviderBuilder {
  20. builder.provider.accessKeyId = accessKeyId
  21. return builder
  22. }
  23. func (builder *StaticSTSCredentialsProviderBuilder) WithAccessKeySecret(accessKeySecret string) *StaticSTSCredentialsProviderBuilder {
  24. builder.provider.accessKeySecret = accessKeySecret
  25. return builder
  26. }
  27. func (builder *StaticSTSCredentialsProviderBuilder) WithSecurityToken(securityToken string) *StaticSTSCredentialsProviderBuilder {
  28. builder.provider.securityToken = securityToken
  29. return builder
  30. }
  31. func (builder *StaticSTSCredentialsProviderBuilder) Build() (provider *StaticSTSCredentialsProvider, err error) {
  32. if builder.provider.accessKeyId == "" {
  33. builder.provider.accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
  34. }
  35. if builder.provider.accessKeyId == "" {
  36. err = errors.New("the access key id is empty")
  37. return
  38. }
  39. if builder.provider.accessKeySecret == "" {
  40. builder.provider.accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
  41. }
  42. if builder.provider.accessKeySecret == "" {
  43. err = errors.New("the access key secret is empty")
  44. return
  45. }
  46. if builder.provider.securityToken == "" {
  47. builder.provider.securityToken = os.Getenv("ALIBABA_CLOUD_SECURITY_TOKEN")
  48. }
  49. if builder.provider.securityToken == "" {
  50. err = errors.New("the security token is empty")
  51. return
  52. }
  53. provider = builder.provider
  54. return
  55. }
  56. func (provider *StaticSTSCredentialsProvider) GetCredentials() (cc *Credentials, err error) {
  57. cc = &Credentials{
  58. AccessKeyId: provider.accessKeyId,
  59. AccessKeySecret: provider.accessKeySecret,
  60. SecurityToken: provider.securityToken,
  61. ProviderName: provider.GetProviderName(),
  62. }
  63. return
  64. }
  65. func (provider *StaticSTSCredentialsProvider) GetProviderName() string {
  66. return "static_sts"
  67. }