c_oss.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. if !LocalConfig.Internet { // 如果没有网,就是完全用不了oss,直接不初始化
  24. return
  25. }
  26. var err error
  27. c_log.GlobalLogger.Info("初始化OSS客户端对象 - 开始。")
  28. // 1 访问 HTTP 服务获取 OSS 配置
  29. var get string
  30. // 等待网络可达
  31. for {
  32. get, err = util.HttpGet(LocalConfig.UrlGetOssConfig)
  33. if err != nil {
  34. c_log.GlobalLogger.Error("http 获取 oss 配置时出错。可能需要等待网络初始化完成:", err)
  35. time.Sleep(time.Duration(2) * time.Second)
  36. continue
  37. }
  38. break
  39. }
  40. var ossConnectInfo OssConnectInfoStruct
  41. err = json.Unmarshal([]byte(get), &ossConnectInfo)
  42. if err != nil {
  43. c_log.GlobalLogger.Error("解析json时出错:", err)
  44. os.Exit(-1)
  45. }
  46. OssClient, err = oss.New(ossConnectInfo.Endpoint, ossConnectInfo.AccessKeyId, ossConnectInfo.AccessKeySecret, oss.UseCname(true))
  47. if err != nil {
  48. c_log.GlobalLogger.Error("无法创建阿里云client:", err)
  49. os.Exit(-1)
  50. }
  51. // 超时时间设置
  52. //OssClient.Config.Timeout = 3600
  53. OssBucket, err = OssClient.Bucket(ossConnectInfo.BucketName)
  54. if err != nil {
  55. c_log.GlobalLogger.Error("无法创建阿里云bucket:", err)
  56. os.Exit(-1)
  57. }
  58. c_log.GlobalLogger.Info("初始化OSS客户端对象 - 成功。")
  59. }