c_oss.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package config
  2. import (
  3. "cicv-data-closedloop/common/config/c_log"
  4. "cicv-data-closedloop/common/util"
  5. "encoding/json"
  6. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  7. "os"
  8. "sync"
  9. "time"
  10. )
  11. type OssConnectInfoStruct struct {
  12. Endpoint string `json:"endpoint"`
  13. AccessKeyId string `json:"accessKeyId"`
  14. AccessKeySecret string `json:"accessKeySecret"`
  15. BucketName string `json:"bucketName"`
  16. }
  17. var (
  18. OssClient *oss.Client
  19. OssBucket *oss.Bucket
  20. OssMutex sync.Mutex
  21. )
  22. func InitOssConfig() {
  23. var err error
  24. c_log.GlobalLogger.Info("初始化OSS客户端对象 - 开始。")
  25. // 1 访问 HTTP 服务获取 OSS 配置
  26. var get string
  27. // 等待网络可达
  28. for {
  29. get, err = util.HttpGet(LocalConfig.UrlGetOssConfig)
  30. if err != nil {
  31. c_log.GlobalLogger.Error("http 获取 oss 配置时出错。可能需要等待网络初始化完成:", err)
  32. time.Sleep(time.Duration(2) * time.Second)
  33. continue
  34. }
  35. break
  36. }
  37. var ossConnectInfo OssConnectInfoStruct
  38. err = json.Unmarshal([]byte(get), &ossConnectInfo)
  39. if err != nil {
  40. c_log.GlobalLogger.Error("解析json时出错:", err)
  41. os.Exit(-1)
  42. }
  43. OssClient, err = oss.New(ossConnectInfo.Endpoint, ossConnectInfo.AccessKeyId, ossConnectInfo.AccessKeySecret, oss.UseCname(true))
  44. if err != nil {
  45. c_log.GlobalLogger.Error("无法创建阿里云client:", err)
  46. os.Exit(-1)
  47. }
  48. // 超时时间设置
  49. //OssClient.Config.Timeout = 3600
  50. OssBucket, err = OssClient.Bucket(ossConnectInfo.BucketName)
  51. if err != nil {
  52. c_log.GlobalLogger.Error("无法创建阿里云bucket:", err)
  53. os.Exit(-1)
  54. }
  55. c_log.GlobalLogger.Info("初始化OSS客户端对象 - 成功。")
  56. }