package config import ( "github.com/sirupsen/logrus" "github.com/tencentyun/cos-go-sdk-v5" "net/http" "net/url" "os" ) var client *cos.Client var chatLogClient *cos.Client func GetCOSClient() *cos.Client { if client == nil { InitCOSClient() } return client } func GetChatLogCOSClient() *cos.Client { if chatLogClient == nil { InitChatLogCOSClient() } return chatLogClient } func InitCOSClient() { if os.Getenv("COS_BUCKETURL") == "" { logrus.Warn("没有配置cos,跳过初始化...") return } u, _ := url.Parse(os.Getenv("COS_BUCKETURL")) // 用于 Get Service 查询,默认全地域 service.tx_cos.myqcloud.com //su, _ := url.Parse("https://cos.ap-nanjing.myqcloud.com") b := &cos.BaseURL{BucketURL: u} // 1.永久密钥 client = cos.NewClient(b, &http.Client{ Transport: &cos.AuthorizationTransport{ // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 SecretID: os.Getenv("COS_SECRETID"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 SecretKey: os.Getenv("COS_SECRETKEY"), }, }) } func InitChatLogCOSClient() { if os.Getenv("COS_CHATLOG_BUCKETURL") == "" { logrus.Warn("没有配置cos,跳过初始化...") return } u, _ := url.Parse(os.Getenv("COS_CHATLOG_BUCKETURL")) // 用于 Get Service 查询,默认全地域 service.tx_cos.myqcloud.com //su, _ := url.Parse("https://cos.ap-nanjing.myqcloud.com") b := &cos.BaseURL{BucketURL: u} // 1.永久密钥 chatLogClient = cos.NewClient(b, &http.Client{ Transport: &cos.AuthorizationTransport{ // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 SecretID: os.Getenv("COS_SECRETID"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 SecretKey: os.Getenv("COS_SECRETKEY"), }, }) }